我如何确保调用startProcess();
函数,但不会暂停myFunction()
的执行。我猜想有一种方法可以调用一个函数并阻止它返回它的值,从而实现这个功能吗?
的伪代码:
function myFunction() {
startProcess();
return $something;
}
function startProcess() {
sleep(5);
// Do stuff that user doesn't should have to wait for.
}
答案 0 :(得分:5)
你不能这样做。 PHP中有一些允许异步I / O的函数,但没有你需要的并发性。
现有无语言支持的原因是PHP旨在执行短期脚本,而并发性由HTTP守护程序管理。
另见:
答案 1 :(得分:3)
为了对Artefecto的回答做一点补充,有些人试图重新创建一种线程情况。你可以使用谷歌找到它的一些信息,但我怀疑它会有所帮助,因为它太实验性,可能非常不可靠。
找到一个可能对您有所帮助的链接。
答案 2 :(得分:1)
就我的问题和标签而言,你想要做一些后台处理,基本上就是多线程。
不幸的是,PHP没有这样做。有些IO函数是异步的,但通常不能在PHP中进行并发处理。
答案 3 :(得分:1)
你想要startProcess()做什么?有许多方法可以防止用户等待。
电子邮件就是一个很好的例子:运行mail()的线程会一直旋转,直到邮件被接受或拒绝为止;你不希望用户必须等待它。因此,您排队任务,然后在cron上处理您的队列。
function myFunction() {
addToQueue();
return $something;
}
function addToQueue() {
// add stuff to the queue of tasks
}
function runQueue() {
// process the queue of tasks; called by cron.
}
答案 4 :(得分:1)
你有没有看过Gearman来完成这种背景任务?
答案 5 :(得分:1)
我打算在黑暗中拍摄,但这个功能看起来可能是你整体目标的解决方案吗?
http://php.net/manual/en/function.register-shutdown-function.php