我有一个PHP脚本,我想在用户提交表单后在后台运行。 最简单的解决方案似乎是使用类似以下的分支:
$pid = pcntl_fork();
if ($pid) {
// Parent process. Do nothing.
} else {
// Child process. Put background script in this block.
}
这在命令行中运行良好,但已被“禁止”浏览器(HHVM can't use pcntl_fork)。
下一个最简单的解决方案是使用
exec( 'php ' . $path . ' > /dev/null &' );
其中$ path指向我的后台脚本。同样,这在命令行上完美运行,但是当从浏览器运行时会产生错误
“无法初始化中央HHBC存储库:无法打开文件 /var/www/.hhvm.hhbc“
我甚至没有/ var / www /文件夹,所以出于绝望,我创建了一个并将.hhvm.hhbc从/home/vagrant/.hhvm.hhbc符号链接到新目录中。然后我被打了
“无法初始化中央HHBC存储库:无法初始化 /var/www/.hhvm.hhbc中的模式:“
我在整个html文件夹和原版.hhvm.hhbc中使用chmod 777有点疯狂,但它对我没有好处。
在前台运行我的后台脚本是一个非常糟糕的用户体验,因为在用户再次看到页面之前单击提交按钮后会有~15秒的暂停。有没有人知道如何做到这一点?
答案 0 :(得分:1)
尝试使用“pagelets”。这使您可以启动新的后台PHP请求。 文档:https://github.com/facebook/hhvm/blob/master/hphp/doc/threading