<?php /** * daemonize让当前脚本为守护进程执行 * @param string $callback 匿名函数 */ function daemonize($callback) { //创建子进程 $pid = pcntl_fork(); if ($pid < 0) { exit('创建子进程失败退出'); } elseif ($pid) { exit('主进程退出'); } else { //设置子进程为会话leader $sid = posix_setsid(); if ($sid < 0) { exit('设置子进程为leader失败'); } $callback(); } } //执行任务来测试 $callback = function () { for ($i=0;$i<10000;$i++) { file_put_contents('1.txt',$i.PHP_EOL,FILE_APPEND); } }; daemonize($callback);
先让主进程退出,然后设置子进程为会话组长即可
md5/sha1+salt方式是目前各大cms常用的加密方式,虽然salt安全,但是各大md5网站也在研究这个方向,那么我们应该选择password_hash动态hash来助力,一种密码有多种hash结果.看代码模拟登陆.<?php //01.注册 $user ='zhang...
array_merge是最常用的数组合并方法,+号同样也可以,但是却有很大不同。array_merge遇到相同字符串key,后面数组的key会覆盖前面数组的key,+号正好相反。$a = [ 'one' => 'A on...
<?php //php7+ define('CONFIG', [ 'MYSQL' => '127.0.0.1',  ...
自己的composer已经发布到packagist,但是无法使用composer require easy-task/easy-task来安装,只能在配置文件使用如下方式安装:"require": { "easy...
为什么使用队列?因为pop取队列具有原子性。假如我们需要秒杀一个商品id,我们先将商品的库存保存到一个队列。例如:<?php $redis = new Redis(); $redis->connect('127.0.0.1', 6...
由于workerman底层直接读取$_SERVER['argv']的命令行参数,没有提供独立的方法start/stop,而tp的命令行参数无法适配workerman,虽然thinkphp官方专门做了一个适配的版本,但是看了下评论问题挺多的。于是自己来搞一个.(1).在applicat...