またはのような拡張機能を使用せずに、2 つのメソッドを並行して実行することは可能ですpthreadかpcntl?
Symfony/Processを試してみましたが、php cli プログラミングにしか使えないようです。
私の要件はphp web application です。拡張子なしで動作するというamphp/parallelを見つけました。以下の例を試しました。ライブラリが真の並列機能を提供するのか、それともキューイングタスクのようなものを提供するのかはわかりませんが? 以下に「拡張なしで並列処理はできません」とコメントされているためです。
を試す前に、amphp/parallel見つけたライブラリが自分の仕事に適しているかどうかを確認したかったのです。2 つのメソッド test1() と test2() を並行して実行し、これら 2 つのメソッドの結果を次の行で使用するとします。
<?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
}