2012-02-28 2 views
0

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

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

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

ответ

1

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

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

МОЖЕТ МОЖЕТЕ МОЖЕТ МОЖЕТЕ ОБЕСПЕЧИТЬ оба в то же время, но это «расширенное упражнение» - или, по крайней мере, некоторые думают так.

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

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