Можно ли запустить два метода параллельно без использования какого-либо расширения, например pthread
или pcntl
?
Я пробовал Symfony / Process , но, похоже, я могу его использовать только для php Cli программирования.
Мое требование для php веб-приложения . Я нашел amphp / parallel , который говорит, что работает без каких-либо расширений. Я попробовал приведенный ниже пример. Хотя я не знаю, предоставляет ли библиотека истинную параллельную функциональность или что-то еще, например задачи очередей? Потому что это прокомментировано ниже "без какого-либо расширения параллельная обработка невозможна".
Прежде чем попробовать amphp/parallel
, я хотел убедиться, что библиотека, которую я нашел, является подходящей для моей работы. Допустим, я хочу запустить два метода test1 () и test2 () параллельно и использовать результат этих двух методов в следующей строке.
<?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);
test1(){
// do some database query
}
test2(){
// run a lengthy for loop
}