在PHP中處理并發請求,可以使用以下幾種方法:
$processes = [];
for ($i = 0; $i < 5; $i++) {
$pid = pcntl_fork();
if ($pid == -1) {
// 創建子進程失敗
} elseif ($pid) {
// 父進程
$processes[] = $pid;
} else {
// 子進程
// 在這里執行您的任務
exit(0);
}
}
// 等待所有子進程完成
foreach ($processes as $pid) {
pcntl_wait($status);
}
ReactPHP示例:
require 'vendor/autoload.php';
$loop = React\EventLoop\Factory::create();
$loop->addPeriodicTimer(1, function () {
echo "Tick\n";
});
$loop->addPeriodicTimer(5, function () {
echo "Tock\n";
$loop->stop();
});
echo "Start\n";
$loop->run();
Amp示例:
require 'vendor/autoload.php';
$loop = Amp\Loop::run();
Amp\call(function () {
while (true) {
echo "Tick\n";
yield Amp\delay(1000);
}
});
$loop->run();
Swoole示例:
<?php
$http = new Swoole\Http\Server("0.0.0.0", 9501);
$http->on('Start', function ($server) {
echo "Swoole HTTP server is started at http://0.0.0.0:9501\n";
});
$http->on('Request', function ($request, $response) {
$response->header("Content-Type", "text/plain");
$response->end("Hello World\n");
});
$http->start();
總之,根據您的應用程序需求和運行環境,可以選擇合適的方法來處理PHP中的并發請求。