Чем управление памятью в PHP отличается от управления в Python? - PullRequest
9 голосов
/ 28 мая 2011

Какая разница в том, как они обрабатываются?

В частности, почему часто встречается Python, используемый в долгоживущих приложениях производственного уровня, таких как веб-серверы, в то время как PHP не имеет аналогичных уровней эффективности?

1 Ответ

8 голосов
/ 02 июня 2011

PHP был разработан как язык сценариев гипертекста. Каждый процесс должен был закончиться через очень короткое время. Поэтому управление памятью и сборщик мусора в принципе не имели значения.

Однако легкость и популярность PHP вызвали его использование в долгоживущих программах, таких как демоны, обширные вычисления, серверы сокетов и т. Д.

PHP 5.3 представил множество функций и исправлений, которые делали его пригодным для таких приложений, однако, на мой взгляд, управление памятью имело меньшее значение в этом отношении.

Управление ошибками в PHP сейчас довольно хорошо, но, как и на любом другом языке программирования, который я знаю, вы можете производить утечки памяти.

Вы по-прежнему не можете кодировать в том же стиле, в котором вы можете кодировать приложения Java или Python. Многие программы на PHP, вероятно, будут показывать серьезные проблемы, в отличие от Java / Python.

Вы можете охарактеризовать это как "хуже", но я бы не стал. PHP просто представляет собой другой набор инструментов, с которыми вам приходится обращаться по-разному.

Компания, в которой я работаю, имеет множество системных программ и демонов, написанных на PHP, которые работают как шарм.

Я думаю, что наибольшее предостережение для PHP, когда вы описываете «долгоживущие приложения производственного уровня», - это его способность к многопроцессорности и многопоточности (2-го в принципе не существует).

Конечно, есть возможность форкать процессы, получать доступ к общей памяти, осуществлять межпроцессное взаимодействие и иметь очереди сообщений и прочее. Но Python далеко впереди в этом вопросе, потому что он был разработан снизу вверх для таких работ.

...