触发功能而不等待响应?

时间:2015-01-20 作者:dhelm

我正在为客户运行电子商务解决方案,必须上载。txt文件到每个订单的FTP。每次收到订单时,我都需要触发我编写的函数来执行此操作,但我不确定如何执行此操作,以便最终用户在继续会话之前不必等待函数完成。完成文件写入和FTP上载可能需要一些时间。

代码也是为了从命令行运行而编写的,因此完全独立的会话不会成为问题,并且不需要向用户返回任何数据。

我担心这可能会很快进入线程和php扩展,我可能不得不深入研究,但我希望有一种更简单的方法。

1 个回复
SO网友:dhelm

由于程序可以从命令行运行,无需响应,因此使用exec()即可完成此任务。

http://php.net/manual/en/function.exec.php

下面评论中的第一个示例用于在提交付款时运行我的命令行程序。程序启动,用户从不等待其完成。不管你的机器是Windows还是其他。

function execInBackground($cmd) {
    if (substr(php_uname(), 0, 7) == "Windows"){
        pclose(popen("start /B ". $cmd, "r")); 
    }
    else {
        exec($cmd . " > /dev/null &");  
    }
}
在我的场景中,$cmd是“php54[目录/文件.php][程序参数]”。

结束

相关推荐