从PHP程序内部异步运行部分PHP代码

时间:2017-11-01 09:05:08

标签: php asynchronous fat-free-framework

我有一些PHP脚本,我从外部类调用方法。我想异步运行此方法。我不想阻止其他程序。此方法在后台执行一些操作并且不返回任何内容,因此在完成时无需等待。有没有办法在PHP中执行此操作?

# get post data from user
$postData = $this->f3->get('POST');

# start of asynchronous part
$obj = new asyncClass();
$obj->init($postData);
# end of asynchronous part

# do some work with post data
$soc = new someOtherClass($postData);
$result = $soc->send();
# assign result of work to variable
$this->f3->set('var', $result);
# show it to user
$this->f3->set('view', 'view.html');

如果这可以提供帮助,我正在使用Fat Free Framework和PHP 5.6 Non-Thread Safe

2 个答案:

答案 0 :(得分:2)

您可以使用$f3->abort()将输出/响应发送到浏览器,然后处理其他阻止功能。这不是一个真正的异步解决方案,但会起作用。您还可以使用像php-icicle这样的东西来添加线程支持,但这可能需要安装其他一些php模块。

答案 1 :(得分:0)

使用线程。

class PostDataHandlerAsync extends Thread
{
    private $postData
    public function __construct($postData)
    {
        $this->postData = $postData;
    }

    public function run()
    {
        /*
        Your code goes here
        */
    }
}

$postData = $this->f3->get('POST');
$obj = new PostDataHandlerAsync($postData);
$obj->run();