Короткий ответ на ваш вопрос: нет, ничего подобного для PHP не существует, потому что, как вы указываете, PHP не запускает многопоточные процессы. PHP 7 в этом отношении такой же, как и предыдущие версии PHP.
Теперь вы описываете отсутствие многопоточности как главный недостаток. Это не обязательно так: это большая разница. Минус это или нет - другой вопрос. Это очень сильно зависит от контекста.
Проблема, которую вы описываете, заключается в наличии общего объекта между процессами. Общий объект не является последовательным для PHP без многопоточности, но основная цель общего объекта — совместное использование данных внутри объекта.
Если мы говорим об общих данных, вы правы в том, что БД или файл являются распространенным способом сделать это, и обычно этого достаточно с точки зрения производительности, но если вам действительно нужно больше производительности, вы можете действительно поделиться данными в памяти. с помощью чего-то вроде Memcache. Существуют хорошо зарекомендовавшие себя библиотеки для работы с memcache в PHP. Это было бы нормальным решением PHP.
Теперь есть еще два вопроса, которые я хотел бы здесь затронуть и которые могут быть уместны здесь.
Во-первых, позвольте мне добавить NodeJS к уравнению, потому что это снова делает вещи по-другому. В NodeJS система также является однопоточной, но в отличие от PHP, который запускает новый процесс для каждого запроса, в NodeJS все запросы передаются в один постоянно работающий поток. Это означает, что в NodeJS, даже если он однопоточный, вы можете иметь глобальные данные (обычно соединение с БД), которые совместно используются запросами, потому что все они выполняются в одном процессе.
Дело в том, что однопоточность не является причиной того, что PHP не может обмениваться данными между запросами; это больше о том, что в PHP каждый запрос изолирован от других в своем собственном процессе. Это далеко не недостаток, это на самом деле может быть преимуществом — например, сбой PHP не приведет к падению всего вашего сайта, что могло бы произойти в многопоточной среде или среде с разделяемыми потоками. На самом деле это одна из самых больших слабостей NodeJS: один бит плохо написанного кода может сделать сервер полностью невосприимчивым.
Второе, о чем я хотел сказать, это то, что на самом деле существуют экспериментальные ветки PHP, которые действительно позволяют вам использовать язык как для многопоточной среды, так и для среды с разделяемыми потоками. В обоих случаях они являются очень очень экспериментальными и, конечно же, не должны использоваться в производственной среде. Как вы заметили в вопросе, в языке отсутствуют ключевые функции, которые были бы необходимы для использования в этих средах. Но факт в том, что это можно сделать.
Ни один из этих экспериментов ни к чему не приведет, потому что существующий PHP-код написан без учета таких сред. Вы уже знаете, что произойдет, если вы напишете многопоточную Java-программу, не защищая ваши общие данные, поэтому должно быть ясно, что если PHP когда-либо будет серьезно интересоваться работой на платформах с общими данными, то любой, кто захочет использовать его с существующим PHP код должен был бы сделать обширную переписку. Это не просто произойдет, поэтому можно с уверенностью сказать, что PHP будет придерживаться своего текущего формата с изолированными процессами.
person
Spudley
schedule
06.08.2016
count = count + 1
в запросе? Для файла вы можете использовать php.net/manual/en/function.flock.php - person rjdown   schedule 06.08.2016