Nginx с не-потокобезопасным php ... могу ли я при сохранении писать код в предположении отсутствия условий гонки? - PullRequest
0 голосов
/ 28 февраля 2012

Возможно, я неправильно понимаю, что означает для nginx управление событиями, а не управление процессами (таким образом, у нас нет mod_php в каждом потоке, как в Apache).Я предполагаю, что, поскольку у меня запущен 1 экземпляр php-cgi для всех рабочих потоков nginx, все выполнения php будут синхронными.Означает ли это, что когда я получаю доступ к объектам из базы данных, мне не нужно беспокоиться о состоянии гонки, когда дело доходит до сохранения данных?

Не уверен, что у меня правильное мышление или я совершенно не в себе.

Спасибо.Я новичок в веб-программировании / базе данных / веб-серверах

1 Ответ

0 голосов
/ 28 февраля 2012

«Управляемый событиями» означает, что приложение «сидит там», ожидая событий, которые приведут в движение то, что происходит дальше. Типичные события - это различные формы действий мыши или клавиатуры.

Напротив, «управляемый процессом» (часто «процедурное программирование») просто означает, что есть программа, «следящая» за вещами, постоянно работающая с тем, что она должна делать.

Вы МОЖЕТЕ кодировать оба одновременно, но это «сложное упражнение» - или, по крайней мере, некоторые так думают.

Теперь, большая проблема условий гонки - это действительно вопрос о том, что может произойти запутывание. С базами данных, вот отличный пример: если вы кодируете свой статус ошибки возврата в глобальном переменном и есть ЛЮБОЕ временное перекрытие между действиями в вашем коде (часто это происходит в средах, управляемых событиями, но может происходить и в чисто процедурном программировании), вы может получить неправильное сообщение об ошибке. Представьте, что у потока, который вызвал что-то, была ошибка, и у более быстрого потока не было ошибки, но более быстрый поток появился позже и установил статус в успех; есть условие, которого «поточно-ориентированное» программирование избежало бы. Это всего лишь один пример «состояния гонки».

До тех пор, пока действия каждого потока независимы, у вас самих нет условий гонки - все зависит от логики приложения и его потребностей - и никто здесь не может сказать вам, кем они могут быть, только разработчик! ... Это система бронирования авиабилетов? ...

...