这里有一个奇怪的。我刚刚完成了一个 Silex 应用程序,但是在触发 $app->finish 时遇到了问题。这是我的代码:
<?php
require_once __DIR__ . '/../vendor/autoload.php';
$app = new Silex\Application();
$app->get('/', function (Request $request) {
$batchProcess = function () {
long_process();
};
$app->finish($batchProcess);
return $app->json("ok", 200);
};
$app->run();
所以这里的问题是:批处理永远不会运行!为了找到错误,我在 Silex\Application 的“on”函数中添加了一个 var_export:
/**
* Adds an event listener that listens on the specified events.
*
* @param string $eventName The event to listen on
* @param callable $callback The listener
* @param integer $priority The higher this value, the earlier an event
* listener will be triggered in the chain (defaults to 0)
*/
public function on($eventName, $callback, $priority = 0)
{
$this['dispatcher'] = $this->share($this->extend('dispatcher', function ($dispatcher, $app) use ($callback, $priority, $eventName) {
$dispatcher->addListener($eventName, $callback, $priority);
return $dispatcher;
}));
var_export($this['dispatcher']);
}
当 var_export 在那里时,一切正常(尽管内核在发送任何数据之前运行批处理)。当 var_export 被注释掉时,“ok”它立即返回并且批处理过程永远不会运行。
我究竟做错了什么?为什么内核在不执行我的进程的情况下终止?