Зачем использовать ускорители с fastcgi для PHP? - PullRequest
4 голосов
/ 05 сентября 2010

Я новичок в веб-технологиях и все еще нахожусь в процессе обучения. Слышал, что fastcgi будет хранить скомпилированный (интерпретированный) php-код в памяти, так почему же нужно использовать кеширование кода операции (apc или eaccelerators) для PHP? Но я никогда не слышал о таких ускорителях для Python. Я ожидаю, что как python, так и php оба являются интерпретируемым языком, и это заставляет меня думать, что должно быть место для ускорителей python? поправьте меня, если я ошибаюсь.

Большое спасибо

Ответы [ 3 ]

2 голосов
/ 05 сентября 2010

В отличие от PHP, (C) Python не выбрасывает байт-код после запуска. Когда module.py импортируется, а module.pyc нет, он компилируется с помощью байт-кода, а результат копируется в module.pyc; если он уже существует, компиляция пропущена и используется готовый module.pyc. То же самое можно сделать и для основного скрипта вручную.

Что касается

fastcgi будет хранить скомпилированный (интерпретированный) php-код в памяти, так почему бы использовать PHP-кэширование (apc или eaccelerators) для PHP?

Я никогда не думал об этом - FastCGI не запускает новый процесс для каждого запроса (в отличие от простого старого CGI, который обычно запускает интерпретатор как новый процесс), но это все. Этот тест показывает, что FastCGI не работает лучше, чем mod_php (то есть интерпретатор, встроенный в процесс Apache).

2 голосов
/ 05 сентября 2010

PHP на своем этапе забывает о своевременной компиляции, как только он сделал с этим файлом.Это означает, что PHP должен перекомпилировать файл каждый раз, когда ему что-то нужно.Кэш OpCode (как вы говорите об обходных шагах и хранит классы PHP, скомпилированные в памяти в течение заранее определенного времени).

С другой стороны, Python изначально компилирует вещи намного быстрее интерпретируемого кода на их первойзапустить.Вы видите все файлы .pyc вокруг вашего проекта, они эквивалентны PHP-коду OpCode.

Кэши PHP-кода OpCode часто объединяются с другими функциями (резидентными хранилищами данных), и они также предоставляются внеbox от Python.

Хотя есть несколько «ускорителей» для Python.Наиболее заметным является Psyco , который претендует на повышение скорости от 2x до 100x в идеальных условиях.Но это связано с чудовищно высокой стоимостью оперативной памяти и работает только на архитектурах i386.

0 голосов
/ 05 сентября 2010

Python компилируется в байт-код при выполнении (файлы .pyc), и байт-код сохраняется, а не отбрасывается. Скомпилированный питон используется вместо исходного, если он присутствует. Следовательно, нет необходимости в дополнительном кэшировании кода операции в python, поскольку он уже встроен.

...