PHP:阻止函数返回值?
如何确保PHP:阻止函数返回值?,php,background-process,Php,Background Process,如何确保startProcess()函数,但不会停止执行myFunction()。我猜有一种方法可以调用函数并阻止它返回它的值,从而实现这一点 伪代码: function myFunction() { startProcess(); return $something; } function startProcess() { sleep(5); // Do stuff that user doesn't should have to wait
startProcess()正在调用代码>函数,但不会停止执行myFunction()
。我猜有一种方法可以调用函数并阻止它返回它的值,从而实现这一点
伪代码:
function myFunction() {
startProcess();
return $something;
}
function startProcess() {
sleep(5);
// Do stuff that user doesn't should have to wait for.
}
你不能这么做。PHP中有一些函数允许异步I/O,但与您需要的并发性不同
目前没有语言支持的原因是PHP被设计为执行短期脚本,而并发由HTTP守护进程管理
另见:
- (仅限unix)
从您的问题和标签中我可以看出,您需要进行一些后台处理,基本上是多线程
不幸的是,PHP没有做到这一点。有些IO函数是异步的,但通常不能在PHP中进行并发处理 为了补充阿泰费托的答案,有些人试图重现一种情景。你可以在谷歌上找到一些关于它的信息,但我怀疑它是否有用,因为它太过实验性,而且可能相当不可靠
找到一个可能对您有帮助的链接
您希望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.
}
你有没有考虑过这种背景任务的处理方法?我想在这里摸黑,但是这个函数看起来是否可以解决你的总体目标