首页 » 作者存档: 信海龙 ( 第 2 页 )

Author Archives: 信海龙

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

 

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

大白话聊聊分布式事务

 

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

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扩展开发之类型处理

 

前言 这次,我们将演示如何在PHP扩展中如何对类型进行一些操作。如,判断变量类型。要实现的PHP代码如下: <?php function get_size ($value) { if (is_string($value)) { return "string size is ". strlen($value); } else if (is_array($value)) { return "a ...

如何学习一门编程语言

 

前几天有人在微博问我如何学习C语言。之前也有人咨询过类似的问题。我把我学习一门语言的过程唠叨下,仅供参考。 我学习一门语言大概会经历如下几步。 基本语法 学习任何东西,都是一个由表及里的过程。学习一门编程语言也一样。对于一门编程语言来说,表就是基本语法。 对于基础语法的学习,我喜欢看一些简短而又系统 ...

使用限流策略,让系统更稳定

 

限流简介 什么是限流 限流是保障系统稳定性的一种策略。限流的思路是,当单位时间系统处理的请求量达到指定阈值,则后续的请求做特殊处理。如,后续的请求被抛弃,或者放到队列中一直等待,而不是及时处理。 生活中限流的应用也很多。如,地铁高峰时,每隔一段时间,放一定量的人进地铁。后面的人只能排队等着。 限流的 ...

PHP7源码阅读笔记(不断更新)

 

函数说明 zend_API.h Zend引擎提供的常用API函数 RETURN_STR(s) 作用:返回一个zend_string字符串。参考:参考示例 RETURN_STRING(s) 作用:返回一个char *字符串。参考:参考示例 ZEND_PARSE_PARAMETERS_START(min_num_args, max_num_args) 作用:在使用FAST ZPP方式解析PHP方法传入的参数时,会用到这个宏方法。这个 ...

PHP7源码分析之CG和EG

 

在阅读PHP源码的时候,会遇到很多宏。如果不了解这些宏的含义,对代码理解会带来很多困扰。现在我们就一起来看看CG和EG两个宏的含义。 CG 含义 CG的含义是 compiler_globals。Zend编译器相关的全局变量。 作用 大家都知道PHP代码最终是转化为Opcode去执行的。在PHP转换为Opcode过程中需要保存一些信息。这些信息就保存 ...