由于需要为自己的php守护进程投递闭包函数来执行,但是发现php官方根本没有提供php闭包函数的序列化功能。后来在mixphp文档发现了mixphp支持异步进程执行投递的闭包函数才发现了一个神奇的php闭包函数序列化composer包
(1).安装序列化composer包
composer require opis/closure
(2).进行闭包函数的序列化测试
//(1).设置闭包函数
$a = function () {
echo 'hello world' . PHP_EOL;
};
//(2).序列化闭包函数,输出序列化后的字符串
$b = \Opis\Closure\serialize($a);
echo $b . PHP_EOL;
//(3).反序列化闭包函数,执行还原的闭包函数
$c = \Opis\Closure\unserialize($b);
$c();输出内容:
C:32:"Opis\Closure\SerializableClosure":176:{a:5:{s:3:"use";a:0:{}s:8:"function";s:53:"function () {
echo 'hello world' . PHP_EOL;
}";s:5:"scope";N;s:4:"this";N;s:4:"self";s:32:"0000000021005892000000007ec4edd0";}}
hello world
php官方的超全局变量$_SERVER['PHP_SELF']也能直接获取,只不过如果url参数太多也会获取。下面提供一个方法获取/* * 获取当前PHP文件名称 */ if (!function_exists('phpself...
(1).前端文件:<form action="upload.php" method="post" enctype="multipart/form-data"> &...
【一】.介绍session由于HTTP是无状态的请求,创建一个会话需要保持必须需要身份标识。当用户第一次访问,PHP会为用户创建一个唯一的sessionid,并将sessionid通过cookie发送给浏览器,并在服务器的临时文件创建一个以sessionid为名的文件用来保存这个sessionid保...
<?php //如果支持exec函数,可以使用的方式 exec('chcp 65001'); //如果exec函数因安全问题禁用,可以使用的方式 pclose(popen('chcp 65001', 'r'));...
PHP简单定时器可以通过pcntl_signal创建闹钟信号来实现。但是缺点很明显,性能一般,要自己实现守护进程,不支持毫秒级定时器,单进程不支持多个闹钟信号,不能跨平台运行event扩展支持的事件多,性能高。<?php //创建event配置.[空配置] $eventConfig ...
(1).今天遇到一件奇怪的事情,在event事件中是无法自定义异常处理,例如我们使用set_exception_handler来统一处理异常。例如下面的代码:<?php error_reporting(E_ALL); set_error_handler(function ($errn...