我想在数组中并行执行域。它可以工作,但只能通过 xampp 而不是在我的虚拟主机上。为什么?
我用这个:
https://github.com/amphp/parallel
代码:
<?php
require __DIR__ . '/../vendor/autoload.php';
use Amp\Parallel\Worker;
use Amp\Promise;
$urls = [
'https://secure.php.net',
'https://amphp.org',
'https://github.com',
];
$promises = [];
foreach ($urls as $url) {
$promises[$url] = Worker\enqueueCallable('file_get_contents', $url);
}
$responses = Promise\wait(Promise\all($promises));
foreach ($responses as $url => $response) {
\printf("Read %d bytes from %s\n", \strlen($response), $url);
}
?>
错误代码如果我在我的虚拟主机上运行它:
池中的工作人员在 vendor/amphp/parallel/lib/Worker/DefaultPool.php 上的代码 -1 第 250 行意外退出 池中的工作人员在代码 -1 第 250 行上意外退出
致命错误:未捕获的 Amp\Process\ProcessException:无法在 /kunden/559288_442/webseiten/webhoster/parallel/vendor/amphp/process/lib/Internal/Posix/Runner.php:142 中列出打开的文件描述符 堆栈跟踪:#0 /kunden/559288_442/webseiten/webhoster/parallel/vendor/amphp/process/lib/Internal/Posix/Runner.php(88): Amp\Process\Internal\Posix\Runner->generateFds() #1 /kunden/559288_442 /webseiten/webhoster/parallel/vendor/amphp/process/lib/Process.php(108): Amp\Process\Internal\Posix\Runner->start('{ ('/usr/bin/ph...', '', Array, Array) #2 [内部函数]: Amp\Process\Process->Amp\Process{closure}() #3 /kunden/559288_442/webseiten/webhoster/parallel/vendor/amphp/amp/lib/ Coroutine.php(67): Generator->current() #4 /kunden/559288_442/webseiten/webhoster/parallel/vendor/amphp/amp/lib/functions.php(96): Amp\Coroutine->__construct(Object(Generator)) #5 /kunden/559288_442/webseiten/webhoster/parallel/vendor/amphp/process/lib/Process.php(110): Amp\call(Object(Closure)) #6 /kunden/4在第 202 行的 /kunden/559288_442/webseiten/webhoster/parallel/vendor/amphp/parallel/lib/Context/Process.php