это странный случай, на который я наткнулся, пытаясь развиваться локально в wind10 с wamp64, php 7.2.18, используя laravel. (это работает без проблем на сервере Linux). Обещания не будут срабатывать до тех пор, пока не истечет время ожидания основного сценария
use GuzzleHttp\Client;
use GuzzleHttp\Promise\EachPromise;
use GuzzleHttp\Psr7\Response;
...
public function test()
{
ini_set('max_execution_time', 5);
$startTime = time();
$testingModel = new TestingModel;
$testingModel->id = $startTime;
$testingModel->save();
$data = [
'http://127.0.0.1:88/a',
'http://127.0.0.1:88/b',
'http://127.0.0.1:88/c',
];
$client = new Client();
$promises = (function () use ($client, $data, $startTime) {
foreach ($data as $datum) {
yield $client->getAsync($datum.'?startTime='.$startTime);
}
});
$eachPromise = new EachPromise($promises, [
'concurrency' => 3,
'fulfilled' => function (Response $response) {
// handle successful promise here
},
'rejected' => function ($reason) {
// handle promise rejected here
},
]);
$eachPromise->promise()->wait();
}
, поэтому код будет максимально пустым, все вызываемые страницы будут работать и возвращать ответ простым ответом return () -> json (['status)'=>' complete ']);
на запрошенных страницах также есть регистраторы, которые указывают время начала для каждой страницы в одном и том же идентификаторе TestingModel (монго-колл). Также проверено все с помощью curl, и все они работают
результаты:
id: 1571395252
aStartTime: 1571395257 (+ 5сек)
bStartTime: 1571395257 (+ 5сек)
cStartTime:1571395257 (+ 5сек)
Журнал доступа apache также выглядит одинаково после того, как первый сценарий отключился, остальные 3 сценария были запущены. Это, безусловно, проблема с apache / php conf или, может быть, даже какое-то ограничение win10 ... без понятия.
Кто-нибудь еще сталкивался с этой проблемой? У меня тоже была такая же проблема пару месяцев назад, но я проигнорировал ее, потому что я редко развиваюсь на победах, но мое любопытство победило:).
Приветствия