Articles of concurrency

Инструменты для проверки / отладки / устранения проблем параллелизма PHP?

Я нахожу, что делаю некоторые относительно продвинутые вещи с memcached в PHP. Становится умственной борьбой, чтобы думать и разрешать условия гонки и проблемы параллелизма, вызванные незащищенным характером кеша. PHP кажется довольно слабым в средствах, когда дело доходит до параллелизма (потоки, кто-нибудь?), Поэтому я задаюсь вопросом, есть ли там какие-либо решения для правильной проверки / отладки. […]

Как безопасно использовать UniqueEntity (на сайтах с более чем одним одновременным пользователем)

Может ли кто-нибудь умный поделиться с шаблоном дизайна, который они используют, чтобы избежать этой основной и общей проблемы параллелизма в Doctrine \ Symfony? Сценарий: каждый пользователь должен иметь уникальное имя пользователя. Неудачное решение: Добавьте ограничение UniqueEntity в объект User. Следуйте шаблону, предложенному в документах Symfony : используйте компонент Form для проверки потенциального нового пользователя. Если […]

php curl localhost медленен при выполнении параллельных запросов

Я нахожу интересный вопрос, который я не уверен в первопричине. У меня есть сервер и два виртуальных хоста A и B с портом на 80 и 81 соответственно. Я пишу простой код php на A, который выглядит так <?php echo "from A server\n"; И еще один простой php-код на сервере B <?php echo "B server:\n"; […]

Насколько плохо используется SELECT MAX (id) в MYSQL вместо mysql_insert_id () в PHP?

Справочная информация. Я работаю над системой, в которой разработчики, похоже, используют функцию, которая выполняет запрос MYSQL, такой как "SELECT MAX(id) AS id FROM TABLE" всякий раз, когда им нужно получить идентификатор последней вставленной строки (таблица с колонкой auto_increment). Я знаю, что это ужасная практика (потому что одновременные запросы будут мешать записи), и я пытаюсь сообщить […]

PHP работает как приложение FastCGI (php-cgi) – как выпустить параллельные запросы?

EDIT: обновление – прокрутка вниз EDIT 2: Обновление – проблема решена Некоторая справочная информация: Я пишу собственный веб-сервер в Java, и пару дней назад я спросил, как именно Apache взаимодействует с PHP, поэтому я могу реализовать поддержку PHP. Я узнал, что FastCGI – лучший подход (поскольку mod_php не является вариантом). Поэтому я рассмотрел спецификацию протокола […]

Как реализовать прослушивание событий в PHP

вот моя проблема: у меня есть сценарий (назовем его comet.php), который подкрепляется клиентским скриптом AJAX и ждет, когда произойдут изменения: while(no_changes){ usleep(100000); //check for changes } Мне не нравится это слишком много, это не очень масштабируемо, и это («imho») «плохая практика». Я хотел бы улучшить это поведение с помощью семафора (?) Или в любом случае […]

Многопоточность / параллельная обработка в PHP

У меня есть PHP-скрипт, который будет генерировать отчет с использованием PHPExcel из данных, запрошенных из базы данных MySQL. В настоящее время он линейный в обработке, поскольку он возвращает данные из MySQL, читает в шаблоне Excel, записывает данные в шаблон, а затем выводит его. Я оптимизировал код до такой степени, что данные повторяются только один раз, […]

Разница между возвращаемым значением неблокирующей функции стада и аргументом $ beblock?

Я пытаюсь понять не блокирующую стаю и аргумент beblock $fp = fopen('/tmp/lock.txt', 'r+'); if(flock($fp, LOCK_EX | LOCK_NB, $wouldblock)) { echo 'Lock obtained'; } else{ echo 'Unable to obtain lock'; } fclose($fp); Документация говорит о блокировке: Необязательный третий аргумент устанавливается равным 1, если блокировка блокируется (условие ошибки EWOULDBLOCK). Воспроизведение в тестовой среде параллельного условия, если другой […]