gpt4 book ai didi

php - 从命令为pthread引导symfony2

转载 作者:行者123 更新时间:2023-12-03 12:52:21 25 4
gpt4 key购买 nike

我正在尝试从symfony 2命令启动线程。

protected function execute(InputInterface $input, OutputInterface $output)
{
$parser = $this->getContainer()->get('app.article.parser');
$providers = $parser->getProviders();
foreach ($providers as $name=>$provider)
{
$parseThread = new ParseThread($parser, $name);
$parseThread->start();
}
}

ParseThread类:
class ParseThread extends \Thread 
{

private $parser;
private $providerName;

function __construct (Parser $parser, $providerName)
{
$this->parser = $parser;
$this->providerName = $providerName;
}

public function run ()
{
$this->parser->parse($this->providerName);
}

}

据我了解,$ this-> parser-> parse(...)应该在新线程中启动。
在解析方法中,基于字符串$ providerName,初始化了一堆类。

这里的问题是新线程没有自举Symfony 2,因此没有自动加载 Composer -因此,我的类没有被加载。

是否有任何明智的方法来在每个线程中引导Symfony 2,从而允许自动加载以及所有其他事情正常工作?

最佳答案

PThreads doesn't inherit autoloading
但是,这应该没什么大不了的。您可以这样做:

<?php

class ParseThread extends \Thread
{

private $parser;
private $providerName;

function __construct (Parser $parser, $providerName)
{
$this->parser = $parser;
$this->providerName = $providerName;
}

public function run ()
{
require_once 'location/to/vendor/autoload.php';
$this->parser->parse($this->providerName);
}

}

关于php - 从命令为pthread引导symfony2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26315393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com