Yar 源码阅读笔记:RPC 通信协议

前言 在上一篇文章中简单的介绍了 Yar 的基本功能,今天我们来了解一下 Yar 的通信协议。 通信协议是服务端与客户端之间进行数据交换的一种约定,只有遵循这种约定才能进行通信。 ...

2021-11-03 · 7 分钟 · 3012 字

Yar 源码阅读笔记:开篇

前言 本文是 Yar 源码系列的第一篇文章,主要介绍 Yar 以及服务端、客户端的基本使用,详细的源码分析会放在后续的文章中。 为什么要研究 Yar? 我从 8 月初开始阅读 《PHP 7底层设计与源码实现》这本书,直到前一阵子才看完,算是通读了一遍。看完之后总想着动手实操一番,将书中的理论知识赋予实践,做到理论实践相结合。 ...

2021-10-17 · 3 分钟 · 1337 字

PHP 8 新特性介绍

前言 距离 PHP 8 发布已经有一年多了,这个版本是 PHP 语言的主版本更新,包含了很多新功能与优化项,并改进了类型系统、错误处理,目前已经迭代到 PHP 8.0.10 版本。 由于更新的内容较多,本文仅介绍部分特性,完整内容可以去官网进行了解。 ...

2021-09-03 · 5 分钟 · 2025 字

基于 OpenSSL 实现国密 SM4 加解密

if (!in_array('sm4-cbc', openssl_get_cipher_methods())) { printf("不支持 sm4\n"); } $key = 'her-cat.com'; $iv = random_bytes(openssl_cipher_iv_length('sm4-cbc')); $plaintext = '她和她的猫'; $ciphertext = openssl_encrypt($plaintext, 'sm4-cbc', $key, OPENSSL_RAW_DATA , $iv); printf("加密结果: %s\n", bin2hex($ciphertext)); $original_plaintext = openssl_decrypt($ciphertext, 'sm4-cbc', $key, OPENSSL_RAW_DATA , $iv); printf("解密结果: %s\n", $original_plaintext); 运行结果: 加密结果: 45cd787b0a84603ae8fd443b81af4d17 解密结果: 她和她的猫 2023.04.11 更新: 今天收到了一位读者的邮件,他在对接银联支付时遇到了问题,使用 PHP 生成的密文与银联支付提供的 Java 示例生成的密文不一致。 ...

2021-08-23 · 1 分钟 · 371 字

PHP 源码阅读笔记:编译与调试 PHP

基本信息 PHP 版本:7.1.0 调试环境:Ubuntu(WSL) 调试工具:GDB、Clion 编译 PHP 下载并安装 PHP: $ wget http://cn2.php.net/distributions/php-7.1.0.tar.gz $ tar -xzvf php-7.1.0.tar.gz $ cd php-7.1.0 $ ./configure --prefix=$HOME/php-7.1.0/build --enable-fpm 注意:$HOME/php-7.1.0/build 是 PHP 执行文件和库文件安装的目录,可以自定义。--enable-fpm 表示同时安装 php-fpm。 ...

2021-08-06 · 3 分钟 · 1017 字