微信搜索superit|邀请体验:大数据, 数据管理、OLAP分析与可视化平台 | 赞助作者:赞助作者

php多线程和crontab定时任务执行,避免ps -ef中启多任务冲突

php aide_941 31℃
class Pipler{
    
    function runProcess($params){
        $fork_num = $params['max_process_count'];
        // n个子进程处理任务
        for ($i = 0; $i < $fork_num; $i++){
            $pid = pcntl_fork();
            
            if ($pid == -1) {
                die();
            } elseif ($pid) {
                //
            } else {
                
                $r = curl_get($params['curl_url']);
                print_r($r);
                
                exit;
            }
        }
        
        while (pcntl_waitpid(0, $status) != -1) {
            $status = pcntl_wexitstatus($status);
        }
    }
}

$pipler = new Pipler;
$pipler->runProcess($params);

排它锁,且等待20秒,超时然后退出

* * * * * /usr/bin/flock -x -w 20 /usr/home/tmp.lock -c 'php /var/www/html/letter/pipler.php >> /var/www/html/letter/log/pipler.log'

排它锁,直接退出:

* * * * * /usr/bin/flock -xn  /usr/home/tmp.lock -c 'php /var/www/html/letter/pipler.php >> /var/www/html/letter/log/pipler.log'

转载请注明:SuperIT » php多线程和crontab定时任务执行,避免ps -ef中启多任务冲突

喜欢 (0)or分享 (0)