PHP и производительность

17

Я всегда слышал, что PHP предназначен для средних и малых веб-сайтов, тогда как .NET и Java для корпоративных приложений. Мой вопрос о PHP. Почему PHP не является хорошим вариантом для корпоративных веб-приложений? Это потому, что если веб-приложение станет больше, то PHP будет медленнее, поскольку это интерпретируемый язык?

Я знаю, что корпоративный мир выберет .NET или J2EE из-за интеграции с их продуктами, а также из-за серверных сервисов и т. Д. Однако, если у нас есть только PHP для создания сайтов и веб-приложений, то как мы можем использовать его, чтобы хорошо работать с большие сайты?

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

наивный
источник
1
Mediawiki (движок Википедии) написан на PHP, и они сделали это хорошо, но это ничего не доказывает. Может быть нишевый случай.
Майкл К
2
@MichaeltheGhost, использующие сайты в топ-50 Alexa (и, может быть, даже чуть больше), являются плохими примерами, потому что их объем находится на таком экстремальном уровне, что их решения хорошо настроены и точно настроены для этого уровня трафика и на самом деле не одинаковы. технологии больше.
Ryathal
1
Facebook тоже использует PHP. Также обратите внимание, что это означает масштабируемость, а не производительность, но вы знаете разницу, верно? Другим примером является freemobile, который переписал свой веб-сайт на PHP из Java по соображениям масштабируемости.
Deadalnix
«В настоящее время большая часть кода PHP в Mediawiki в Фонде Викимедиа использует JIT-компилятор HHVM, хотя некоторые службы продолжают использовать Zend Engine PHP». en.wikipedia.org/wiki/Wikipedia:FAQ/Technical - это то, что Facebook создал для ускорения работы с php (это переводчик с php на c ++, который они затем компилируют). это работает, просто вы не можете сказать только потому, что он написан на php, скорость всегда будет одинаковой. Это зависит от того, что вы делаете с кодом в этом смысле ...
pqsk

Ответы:

19

Производительность, вероятно, не является одним из факторов. Для динамического языка PHP на самом деле работает довольно хорошо; в зависимости от задачи, он может или не может побить другие технологии. Модель приложения просто слишком отличается, чтобы сравнивать ее напрямую с Java или ASP.NET. Даже если есть ощутимая разница в скорости, она невелика и, вероятно, линейна, что означает, что ее можно решить, добавив больше оборудования. Кроме того, сам язык программирования редко является узким местом - алгоритмы, доступ к базе данных, пропускная способность сети и операции ввода-вывода в целом являются обычными виновниками, если вы не пишете что-то действительно интенсивное использование процессора.

Причины использования ASP.NET или Java поверх PHP, которые более вероятны, включают:

  • Интеграция платформы. ASP.NET предлагает обширную интеграцию с .NET и базовой ОС Windows.
  • Общая цель. PHP был разработан специально для Интернета, а .NET и Java - платформы общего назначения. Используя Java или .NET, вы можете без особых усилий привязать веб-интерфейсы рабочего стола и веб-интерфейса к одному и тому же общему коду, в то время как PHP не очень подходит для написания настольных приложений.
  • Особенности организации кода. Java и .NET были разработаны для ООП с самого начала, в то время как ООП в PHP несколько запоздалая мысль. PHP ввел пространства имен совсем недавно, и они ограничены и неуклюжи по сравнению с тем, что могут предложить .NET и Java. Программирование в корпоративном стиле обычно сильно зависит от ООП, что делает PHP менее подходящим кандидатом.

Еще одна причина ощущаемого эффекта заключается в том, что PHP является бесплатным (как в пиве) и вездесущим - каждая дешевая компания с общим веб-хостингом имеет PHP в своем стандартном пакете, но сервер .NET или Java обойдется вам значительно дороже. Следовательно, огромная масса небольших сайтов использует PHP не потому, что это лучший инструмент для работы, а единственный под рукой.

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

tdammers
источник
2
Один маленький спор, вы можете получить общий хостинг ASP.NET по той же цене, что и общий хостинг LAMP. Проблема заключается в том, что первое место, которое большинство людей находят, когда они ищут, продаются для малого и среднего бизнеса и стоят дороже.
jfrankcarr
+1, это очень хорошо сказано и обобщено. Узким местом для большинства плохо работающих приложений является язык.
GrandmasterB
1
Да, но не думайте, что Java - это решение - я имел несчастье использовать множество приложений «Enterprise» от таких компаний, как Oracle. Почти все они могут быть заменены приложением PHP OSS с небольшим снижением функциональности, но с огромным увеличением производительности и удобства использования.
gbjbaanb
3
@gbjbaanb: Java не является решением в этом контексте, потому что нет проблем. И то, является ли что-то открытым или нет, не имеет абсолютно никакого отношения к теме.
tdammers
@GrandmasterB да и нет. Например, в Java много внутренних синхронизированных примитивов, а в PHP нет. Требуется больше дисциплины для написания масштабируемого кода Java. freemobile - пример такого эффекта в реальном мире. Но, поскольку масштабируемость зависит не только от внешнего интерфейса (например, здесь очень важны базы данных), вам все равно нужно подумать об этом.
Deadalnix
13

Вы путаете трафик («малый и средний веб-сайт» обычно означает веб-сайт с небольшим или средним трафиком) со степенью сложности бизнес-логики (простой веб-сайт или корпоративное решение). Во втором случае производительность не является ключевым фактором.

Например, Facebook - это сайт с высоким трафиком, но это не корпоративное приложение. С другой стороны, существует множество интрасетей, основанных на серверах приложений Java, которые не смогут обрабатывать трафик даже веб-сайтов среднего размера.

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


Почему PHP так презирается предприятием? Есть несколько причин, во-первых, это ужасная репутация безопасности . Во-вторых, он воспринимается как язык для любителей создавать некрасивый, неуправляемый код спагетти HTML-PHP. Такое восприятие сохраняется, хотя существуют зрелые платформы MVC. Я предполагаю, что оригинальный автор PHP утверждает, что вам не нужна инфраструктура , не помогает. Тот факт, что эти невежественные любители, практически не имеющие навыков программирования, называют себя «программистами PHP», тоже не помогает. Третья причина в том, что любой опытный программист согласится, что PHP просто плохо спроектирован как язык. Вы можете ясно видеть, что это было разработано веб-мастером,

И да, на предприятии это все о системной интеграции, где PHP тоже не блестит. С достаточным усилием вы можете создавать C-модули. Существует мост PHP-Java, который довольно утомителен в использовании. Помимо этого у вас не так много. Попытки создать Boost :: PHP (интеграция с C ++) не увенчались успехом. Клоны PHP, работающие на JVM, далеки от 100% -ной совместимости с PHP (примечание: формального определения языка PHP нет, единственная ссылка - реализация по умолчанию).

Vartec
источник
6

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

То, что может привести людей к такому выводу, заключается в том, что в случае Java (и, я полагаю, также и с .NET) откат приложений - это термин, часто упоминаемый в документации и литературе. Большинство серверов приложений там поддерживают некоторую форму кластеризации, которая позволяет быстро добавлять «мощность» вместе с ростом популярности. В случае PHP вы должны создать кластер самостоятельно. Вы можете сделать это разными способами, используя различные компоненты, и вам нужно немного узнать о внутренней работе PHP. Это, вероятно, заставляет людей думать, что с одним сервером PHP (и тем самым небольшим или средним веб-сайтом) тупик для PHP.

Яцек Прусия
источник
3

Нет такого понятия, как только корпоративное веб-приложение. В корпоративном мире у вас обычно есть полная корпоративная система, где веб-часть довольно мала по сравнению со всей системой. В Интернете существует множество систем, которые выполняют пакетную обработку, обмен сообщениями в очереди, интеграцию предприятия, шлюзы и многое другое. Событие наверху может быть не только

Хотя PHP хорош для веба, он не так хорош для других типов распределенных систем. А поскольку вы делаете все эти системы на Java или .NET, вы также можете легко создавать веб-стек на той же платформе, а не на PHP.

m3th0dman
источник
1

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

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

Так как .NET, по крайней мере, пытается конкурировать почти напрямую с Java, он предоставляет почти такие же функции и возможности в этом отношении. Вы можете поспорить (и сторонники обоих лагерей) о том, лучше ли Sun или Microsoft справляются с этой задачей лучше, но тот простой факт, что обе группы людей действительно пытаются работать над этим, дает им довольно серьезное преимущество перед PHP в этом. уважать.

Джерри Гроб
источник
0

1) Производительность: несколько ответов здесь вводят в заблуждение по этому вопросу.
Проект Phalanger (который я успешно использовал в прошлом) позволяет вам использовать код C # в PHP и наоборот или полностью переключаться с одного на другой язык. Вам, вероятно, придется внести некоторые изменения, но, поскольку они продолжают работать над этим, оно становится все лучше и лучше.
Моя точка зрения заключается в том, что они выяснили, что средний коэффициент скорости в пользу C # составляет 2,5 (или .NET в целом, VB сделал бы то же самое, в конце концов, это MSIL).
Проверьте свои тесты с Wordpress, он привлек много разработчиков.

Сейчас мы его еще не видели, но всегда есть чувак, который скажет вам, что FaceBook написан на PHP. Неправильно. Первоначально, пока они не осознали свою ошибку и не написали HipHop, чтобы преобразовать ее в C ++.

РЕДАКТИРОВАТЬ: Очевидно, что последний блок неясен, так что я имел в виду, что FaceBook IS написан на PHP, но HipHop делает его RUN как C ++, чтобы улучшить общую скорость, ПОТОМУ ЧТО PHP медленный.

2) Безопасность: как уже было сказано, PHP имеет долгую историю проблем безопасности.

3) Время разработки: создание веб-сайта на PHP имеет тенденцию быть проще, особенно при наличии фреймворков и всех «создателей сайтов». Создание хорошего, надежного и безопасного сайта на PHP - другая история.

Луи Коттманн
источник
Что касается фейсбука / хип-хопа, то он мало что меняет. Они все еще пишут операторы PHP, не так ли? Существует также компилятор PHP в Java. Если я скомпилирую весь свой PHP-код, значит ли это, что мой сайт действительно написан на Java?
Яцек Прусия
Это не значит, что это Java, это означает, что он выполняется как таковой.
Луи Коттманн
Хорошо, вы правы, но могу ли я утверждать, что мой сайт написан на PHP? Если да, то любой может также утверждать, что Facebook написан на PHP. Другими словами, все сводится к тому, как вы понимаете термин «язык программирования». Является ли это только комбинацией допустимых операторов или же средой выполнения. Я предпочитаю первое значение, и поэтому хип-хоп мало что меняет для меня. Так что, в
общем,
Хорошо, я сделаю это яснее. Но, к сведению, я уверен, что большинство читателей поняли мою точку зрения.
Луи Коттманн
Не было ошибкой писать Facebook изначально на PHP. Когда они обнаружили, что они не могут идти в ногу с масштабируемостью, которую они видели, они решили проблему с помощью HipHop. Я думаю, это означает, что использование PHP является очень хорошим вариантом для всех сайтов. Тем не менее, Slashdot использует прямой Perl, и это решило проблему масштабирования, в Википедии используется простой PHP, и у него тоже нет проблем с масштабированием.
gbjbaanb