Вот упрощенная версия моего кода:
Код: Выделить всё
function testXyzScenario() {
$loop->futureTick(function() {
// Task 1: waits (by adding timer function in loop) for task to create a job for it. and then save the results for task 2 in DB.
});
$loop->futureTick(function() {
// Task 2: task 2 creates a job for task 1. and wait (using sleep function) for results from task 1.
});
$loop->run();
}
Я считаю, что это связано с тем, что задача 2 использует функцию сна, которая блокирует цикл событий, и когда задача 2 прекращает ожидание результатов от задачи 1, задача 1 сохраняет результат в БД.
Но я не могу удалить функцию сна в задаче 2, поскольку она не используется задачей 2 напрямую, а используется API того же приложения, которое вызывается задачей 2.
Любая помощь будет принята с благодарностью. Заранее спасибо!
Подробнее здесь: https://stackoverflow.com/questions/785 ... -db-change