PHP:阻止函数返回值?

时间:2010-06-01 18:16:12

标签: php background-process

我如何确保调用startProcess();函数,但不会暂停myFunction()的执行。我猜想有一种方法可以调用一个函数并阻止它返回它的值,从而实现这个功能吗?

的伪代码:

function myFunction() {

    startProcess();

    return $something;       
}

function startProcess() {
    sleep(5);
    // Do stuff that user doesn't should have to wait for.
}

6 个答案:

答案 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