Использование C ++ для ускорения PHP

Я видел этот пост на Sitepoint, цитируя заявление Расмуса Лердорфа, которое идет (согласно Sitepoint) следующим образом:

Как вы можете быстро сделать PHP? Ну, вы не можете «быстро» ответить. PHP просто не достаточно быстрый, чтобы масштабироваться до уровней Yahoo. PHP никогда не предназначался для таких задач. «Любой язык на основе скриптов просто не достаточно быстр». что необходимо для действительно массивных веб-систем, вам нужно использовать скомпилированные расширения C ++, чтобы получить истинную масштабируемую архитектуру. Именно это делает Yahoo и многие другие тяжеловесы PHP.

Заинтригованный утверждением (не говоря уже о том, что до сих пор все, что я делал в PHP, было небольшим основанием на базе данных), мне было интересно, как я могу «использовать скомпилированные расширения C ++» с PHP.

Любые идеи или ресурсы?

Даже не беспокойтесь. PHP медленный … Вы можете создать смесь C ++ и PHP, но вам нужно сделать много профилирования, чтобы понять, что происходит медленно. И это в основном … PHP.

Смотрите следующее:

  • C ++ vs PHP Тесты для реального веб-программного обеспечения
  • Является ли база данных бутылочной шейкой веб-службы? (не совсем … или почему у wikimedia столько серверов)
  • Slashdot статьи о Facebook (или сколько ресурсов PHP отходов)

Просто напишите на C ++ на первом месте. Это так же просто, как писать на PHP с современной веб-картой C ++ и хорошими знаниями на C ++.

Когда начать:

  • CppCMS – масштабируемая среда MVC, ориентированная на производительность.
  • Wt – каркас, который имитирует Qt для Интернета (не уверен, как он хорошо масштабируется).

Медленный субъективный термин. Facebook (самый большой сайт онлайн) построен на PHP, и я никогда не слышал, чтобы они жаловались. Наоборот, в погоне за скоростью развитый и недавно выпущенный HipHop. Если вы идете на сверхбыстрый PHP, вам стоит сосредоточиться. C ++ для Интернета является непрактичным, потому что его необходимо скомпилировать, и это замедлит процесс разработки.

Потому что: Почему так много веб-языков интерпретируется, а не компилируется?

http://www.bitsandbuzz.com/article/compiled-web-vs-interpreted-web/

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

Первый вопрос, который возникает на ум: вы разрабатываете для обработки веб-сайта более миллиона просмотров в час? Потому что, если нет, то ваши затраты все в разработке программного обеспечения, и вы получите больше ударов для своего доллара, настроив ваш текущий код PHP и добавив аппаратное обеспечение, чем перенос даже части кода на C или C ++.

См. Также http://shootout.alioth.debian.org/ обратите внимание на сравнение размера кода.

Да, выше этого уровня (приблизительно), ваши затраты на оборудование начинают эскалацию до такой степени, что это стоит дополнительных усилий для разработки на скомпилированном языке.

Следующее, что нужно иметь в виду, состоит в том, что, хотя верно, что очень хорошо написанный скомпилированный код почти всегда превосходит аналогично хорошо написанный интерпретируемый код, когда качество кода даже немного меньше совершенного, разница уменьшается – и эффект будет варьироваться в зависимости от языка, а также от способности программистов. В настоящее время я ухожу за грамотно разработанным веб-приложением, написанным на Java (которое работает как родной код), что требует в два раза больше аппаратного ресурса для работы медленнее, чем сопоставимая система, которой я управлял, написанная на PHP программистами, которую лучше всего можно назвать довольно широкий диапазон уровней мастерства. Хотя это прямо противоречит тому, что большинство программистов считают здравым смыслом, я уверен, что интерпретируемый / скомпилированный аргумент не единственный. Есть много orgranisations / индивидуумов, все еще разрабатывающих интерпретируемые langaues, например Groovy, Apex.

C.

Есть введение в написание расширений php по адресу http://devzone.zend.com/article/1021 (опубликовано в 2005 году, возможно, немного устарело).
Вы также можете использовать такие инструменты, как swig, для создания оберток для существующего кода на C / C ++.

Благодаря Артему за ссылку на эту информативную ссылку,

http://idleprocess.wordpress.com/2009/11/24/presentation-summary-high-performance-at-massive-scale-lessons-learned-at-facebook/

который говорит, помимо всего прочего, «C ++ Interoperability Challenging».

C ++ требует больших усилий для написания веб-сайта. Почему бы не выбрать язык между C ++ и PHP, скажем, Python, который выполняется bytecode JIT, и я понимаю, что это относительно легко распространяется на C ++.

Для больших вычислений и обработки C ++ может использоваться с php. А для более легкого процесса достаточно только PHP.

При работе над обработкой данных или вычислениями на основе приложений C ++ может помочь. Пожалуйста, не нужно использовать один трюк здесь.

Нужно создать процесс сервера (daemon), который поддерживает листинг для запроса. Этот процесс демон уже скомпилирован и содержит код обработки.

Поэтому, когда есть какой-либо запрос на обработку данных, он будет делать это намного быстрее, чем PHP, и ответит с результатом.

Для выполнения исполняемого файла демона можно использовать функцию exec или аналогичную функцию.