<?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);先让主进程退出,然后设置子进程为会话组长即可
通过该函数可以获取指定端口的页面源码,还能设置超时时间、自定义数据包,fsockopen 也很强大,但是比较偏底层。可以自定义设置header头信息,强大至极。$socket=fsockopen('www.jd88.net','80',$errno,$errstr,3...
本篇文章不是讲解如何用.net开发自己的dll然后PHP通过com调用。主要记录PHP官方支持的DOTNET 基本语法如下:$obj = new DOTNET("assembly", "classname")a...
上篇文章已经讲解arrayacces的原理,现在来讲解下arrayaccess的实际应用。一个大型的互联网项目中必然会存在各种配置信息,例如多种数据库信息:mysql,tidb,mongodb,redis,某个业务模块单独的配置信息如比例,额度等等,那么该如何治理配置信息?PHP项目中大部分的框架都...
xmlrpc协议是通过http请求xml数据进行通信。webservice中和它相同的是soap。soap调用的确很简单,但是创建wsdl太繁琐,效率低下。xmlrpc很好的解决这个问题。(1).创建xmlrpc服务端(求和函数api)function getSum($method,$ar...
ThinkPHP中有一个debug调试功能,能输出报错文件的信息,并能看到这个函数被哪些函数调用,从框架的启动开始记录,特别方便调试。于是研究了下它的底层给予了实现。<?php //--框架核心--Start //框架内置错误处理 function errDealWith($er...
(1).学习的目标:学会创建父子进程,并且能够区分当前进程是父还是子;了解父进程执行过程,子进程执行过程;能够用多进程执行任务(2).相关函数学习: (2.1)pcntl_fork()执行时: &nbs...