Я ровно это делаю через redis queues (со стороны ratchet - predis async client). Две очереди - от ratchet в fpm, и обратно.2 реальные задачи:
1. получать файл на upload в php-fpm worker и сообщать его имя демону по сокету для обработки и отправки на S3
2. хочу получать сообщение для чата в php-fpm worker, обрабатывать с ORM, т.е. с блокирующими запросами к базе, и переваренное сообщение отдавать демону для раздачи в канале по web socket
проверять как этот демон потянет поддержку file upload не хочу, пусть этим занимаются nginx и fpm
большинство есть - http, mysql, redis, memcached... Для постгреса пока нет, скоро свой выложу на гитхабА асинхронные драйверы к базам, асинхронный curl и fs (в общем все IO) появились под php? Потому что в node, надо очень сильно следить за этим в чужих библиотеках, да и в своем коде.
там интерфейс, требующий явного поллинга. не катитpostgres реализуют асинхронность еще с 4ки
Там не очень сложный протокол. Я уже почти весь реализовал, остались редко нужные мелочи типа copy, и что-то удобное для транзакций - в стиле nodejs domains.хм, я так детально не вникал, видимо, требует реализации через опрос в основном цикле приложения, что, безусловно, overhead
в таком случае, с pg будет тяжко, там даже маппинг типов никто не сделал
Да, генераторы упрощают работу с асинхронностью в любом языке.Вот в http://blog.kelunik.com/2015/09/20/getting-started-with-amp.html показывают как генераторы упрощают асинхронные задачи на php.
$loop = React\EventLoop\Factory::create();
$asyncPromise = new React\Promise\Promise(function($resolve) use ($loop) {
$loop->nextTick(function() use($resolve) {
$resolve('Async Promise');
});
})