当前位置:首页 > PHP > 正文内容

php守护进程

高老师7年前 (2019-04-27)PHP1993
<?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);

先让主进程退出,然后设置子进程为会话组长即可

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/88.html

分享给朋友:

“php守护进程” 的相关文章

 PHP判断微信浏览器, PHP判断是否微信浏览器

PHP判断微信浏览器, PHP判断是否微信浏览器

获取浏览器信息原理是基于浏览器的UA信息,早在AsP时代就这样判断,但是腾讯总是喜欢自己折腾,不知道以后会修改成什么! 提取自人人商城官方自带的判断方法:function is_weiXin()  {    if (empty($_SERV...

php创建webservice,php搭建webservice,php编写webservice

php创建webservice,php搭建webservice,php编写webservice

第一步:服务端文件<?php $wsdlfile='webservice.wsdl'; ini_set('soap.wsdl_cache_enabled','0');    //关闭WSDL缓存 //001...

php异步执行,php后台运行,如何在windows下让php后台运行

php异步执行,php后台运行,如何在windows下让php后台运行

如果想在windows中执行php,并且让php脚本在后台运行,可以用下面的cmd命令start /b php  D:\wwwroot\default\demo1\run.php例如上面的命令意思后台运行run.php,如果想用php编写异步代码: ...

PHP Startup: Unable to load dynamic library 'C:\php\ext\php_curl.dll找不到指定的模块

PHP Startup: Unable to load dynamic library 'C:\php\ext\php_curl.dll找不到指定的模块

最近在编写windows php多线程的东西,从官网下载了PHP的线程安全版,尝试开启curl扩展extension=php_curl.dllphp -m 却提示 PHP Startup: Unable to load dynamic library 'C:\php\ext\php_curl...

php jsonp转json,php jsonp转数组,php jsonp转对象

php jsonp转json,php jsonp转数组,php jsonp转对象

将jsonp转为PHP数组和对象。/**  * jsonp转数组|Jsonp转json  * @param string $jsonp jsonp字符串  * @param bool $as...

php event异常处理,php set_exception_handler无效

php event异常处理,php set_exception_handler无效

(1).今天遇到一件奇怪的事情,在event事件中是无法自定义异常处理,例如我们使用set_exception_handler来统一处理异常。例如下面的代码:<?php error_reporting(E_ALL); set_error_handler(function ($errn...