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.
}

你有没有考虑过这种背景任务的处理方法?

我想在这里摸黑,但是这个函数看起来是否可以解决你的总体目标