PHP7扩展开发之配置项

前言 我们经常使用的一些扩展,有的会在php.ini文件中会有一些配置项。这些配置项控制扩展的行为。如 opcache扩展,经常使用的配置项如下: [opcache] ; 模块地址 zend_extension=opcache.so ; 开关打开 opcache.enable=1 ; 开启CLI opcache.enable_cli=1 ; 可用内存, 酌情而定, 单位为:Mb opcache.memory_consumptio ...

PHP7扩展开发之流操作

前言 啥是流操作?简单来讲就是对一些文件,网络的IO操作。PHP已经把这些IO操作,封装成流操作。这节,我们将使用PHP扩展实现一个目录遍历的功能。PHP示例代码如下: <?php function list_dir($dir) { if (is_dir($dir) === false) { return; } $dh = opendir($dir); if ($dh == f ...

PHP7扩展开发之传参与返回值

 

前言 这次,我们将演示如何在PHP扩展中接受传入的参数和输出返回值。 <?php function default_value ($type, $value = null) { if ($type == "int") { return $value ?? 0; } else if ($type == "bool") { return $value ?? false; } els ...

一次由于MTU设置不当导致的网络访问超时

 

现象 Server A 调用本机的接口,能正常返回。调用Server B的接口,总是超时。被调用接口是能正常执行的,而且有执行日志记录。 Server C 调用Server B的接口也能正常返回。 分析 根据以上,基本可以排除是Server B接口服务的问题导致超时。很有可能 Server A 与 Server B之间的网络有问题。抓包分析如下: Server A 调 ...

Java泛型使用示例整理

 

Java泛型使用示例整理 目标 Java泛型编程是JDK1.5版本后引入的。泛型让编程人员能够使用类型抽象,通常用于集合里面。本文旨在整理一些泛型的用法。 用法 泛型分两部分。一部分是泛型类和方法的定义。另一部分是泛型类和方法的使用。 定义篇 类定义时,使用泛型 在定义类的时候,我们可以使用泛型。如下代码: class ...

大白话聊聊分布式事务

 

大白话聊聊分布式事务 什么是分布式事务 简单的来说就是,一个大的操作由两个或者更多的小的操作共同完成。而这些小的操作又分布在不同的网络主机上。这些操作,要么全部成功执行,要么全部不执行。 拿转账的例子来说下什么是分布式事务。张三和李四在不同的城市,存储他们账户信息的服务器也在不同的网络主机上。张三 ...

Swoole2.0协程的使用和源码解读

 

聊聊Swoole2.0协程 Swoole 2.0正式版发布了。2.0版本最大的更新是增加了对协程(Coroutine)的支持。正式版已同时支持PHP5和PHP7。基于Swoole2.0协程PHP开发者可以已同步的方式编写代码,底层自动进行协程调度,转变为异步IO。解决了传统异步编程嵌套回调的问题。 目前Swoole底层内置的协程客户端组件包括:udpclient、 ...

PHP7扩展开发之创建变量

 

前言 在这篇博文中我们将演示如何在PHP扩展中创建一个变量。示例代码如下: <?php class demo {} $lng = 2; $str = "abc"; $arr = array(1,'a' => 'b'); $obj = new demo(); var_dump($str); var_dump($arr); var_dump($obj); ?> 中间的三行我们将用PHP扩展来实现。 代码 基础代码 这个扩展, ...

PHP7扩展开发之常量定义

 

前言 这次,我们将演示如何在PHP扩展中定义一个常量。要实现的PHP代码如下: <?php define("__ARR__", array('2', 'site'=>"www.bo56.com")); define("__SITE__", "www.bo56.com", true); define("say\__SITE__", "bo56.com"); v ...

PHP7扩展开发之数组处理

 

前言 这次,我们将演示如何在PHP扩展中如何对数组进行处理。要实现的PHP代码如下: <?php function array_concat ($arr, $prefix) { foreach($arr as $key => $val) { if (isset($prefix[$key]) && is_string($val) && is_string($pref ...

PHP7扩展开发之字符串处理

PHP7扩展开发之字符串处理 前言 这次,我们来看看字符串在PHP扩展里面如何处理。 示例代码如下: <?php function str_concat($prefix, $string) { $len = strlen($prefix); $substr = substr($string, 0, $len); if ($substr != $prefix) { return $prefix." ".$string; } else ...