PHP 实现异步执行的方法

PHP 实现异步执行的方法

最近一个小项目碰上需要异步执行 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 + nohupFastCGI 异步
  • 复杂场景:消息队列
THE END
喜欢就支持一下吧
点赞0 分享 收藏
评论 抢沙发
欢迎您留下宝贵的见解!(至少 2 字)
提交
昵称

昵称

昵称 表情 快捷回复

    暂无评论内容