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 не подходит для больших проектов - он просто не подходит для «корпоративного» программирования. Его сильные стороны кроются в другом месте, и если вы можете использовать их, вы можете с такой же легкостью создавать крупномасштабные приложения, как и с любой другой веб-технологией.


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 нет, единственная ссылка - реализация по умолчанию).


6

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

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


3

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

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


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.