<?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);先让主进程退出,然后设置子进程为会话组长即可
开发com组件可以用c++,vc++,net,我比较熟悉net,演示用dnet(1).创建项目:启动vs2017,新建项目,选择Visual C# ->Windows桌面->类库通用windows(2). 修改Com项目:点击 项目->项目属性,再点击应用程序->程序集信息,...
逛公众号文章看到文章"php实现事件监听与触发的方法,你用过吗?",我就好奇了,php又不是asp.net的webform,哪里来的服务端事件监听。于是学习了一波。先看下监听类:class Event { /** &nbs...
ThinkPHP中有一个debug调试功能,能输出报错文件的信息,并能看到这个函数被哪些函数调用,从框架的启动开始记录,特别方便调试。于是研究了下它的底层给予了实现。<?php //--框架核心--Start //框架内置错误处理 function errDealWith($er...
(1).config.php 配置文件<?php /** * RabbitMQ_Config */ $config = [ 'host' => ...
参数中包含gb2312的字符串,返回结果是false或者null(不同PHP版本具有差异性)代码:<?php $dbms = 'mysql'; $host = '192.168.8.8'; $dbName =&n...