
最近一个小项目碰上需要异步执行 PHP 代码的需求,研究了几种实现方式。
方法一:FastCGI 异步
使用 fastcgi_finish_request(),关闭连接后在后台继续处理:
<?php
echo "任务已提交!";
fastcgi_finish_request();
// 以下代码在后台执行
sleep(10);
file_put_contents('/tmp/async.log', '后台任务完成');
方法二:exec + nohup
<?php
exec("nohup php /path/to/task.php > /dev/null 2>&1 &");
方法三:cURL 超时调用
设置超时 1 秒,让请求快速返回:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://example.com/task.php");
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
curl_exec($ch);
curl_close($ch);
方法四:消息队列
使用 Redis、RabbitMQ 等消息队列系统分发异步任务。
方法五:Gearman / Beanstalkd
使用专业的任务队列系统。
推荐
- 简单任务:exec + nohup 或 FastCGI 异步
- 复杂场景:消息队列
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持一下吧



暂无评论内容