异步 PHP 任务执行:超越 Exec() 和 MySQL 队列
开发大型 PHP Web 应用程序时,必须通过执行来防止瓶颈某些任务是异步的。考虑到 exec() 黑客和 MySQL 队列的局限性,本文探讨了实现此目的的各种方法。
Exec() 黑客:一个粗略但有效的解决方案
许多开发人员诉诸 exec() 函数来启动后台任务,如示例所示:
exec("doTask.php $arg1 $arg2 $arg3 >/dev/null 2>&1 &");
虽然这种方法可能看起来有效,但由于其临时性和系统依赖性,它不是一个理想的长期解决方案。
MySQL 队列:一种 DIY 方法
改进 exec() hack,可以实现 MySQL 队列系统。任务将在数据库表中排队,并由一个单独的长时间运行的 PHP 脚本定期轮询该表并执行新任务。这种方法通过在多台工作机器上分配任务来提供未来可扩展性的潜力。
更好的替代解决方案
但是,值得考虑的是大量现有工具提供了更强大且功能丰富的异步任务方法执行:
ignore_user_abort:一种更简单但次优的技术
最后,考虑ignore_user_abort选项。即使在页面已发送给用户之后,此方法也可以通过继续处理来避免脚本过早终止。虽然从用户角度来看它最大限度地减少了延迟,但它可以延长感知的页面加载时间。
以上是除了 `exec()` 和 MySQL 队列之外,如何在 PHP 中高效执行异步任务?的详细内容。更多信息请关注PHP中文网其他相关文章!