PHP та продуктивність


17

Я завжди чую, що PHP призначений для середніх і малих веб-сайтів, тоді як .NET і Java для корпоративних програм. Моє запитання щодо PHP. Чому PHP не є хорошим варіантом для корпоративних веб-додатків? Це тому, що якщо веб-додаток стає більшим, PHP буде повільніше, оскільки мова інтерпретується?

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

Якщо коротко, чи існує залежність між продуктивністю PHP та розміром веб-сайту? Які чинники роблять PHP не підходящим варіантом для великих сайтів?


1
Mediawiki (двигун wikipedia) написаний на PHP, і вони зробили це добре, але це нічого не підтверджує. Може бути нішевий випадок.
Майкл К

2
@MichaeltheGhost, що використовує сайти в топ-50 Alexa (а може навіть і трохи більше), є поганими прикладами, оскільки їх обсяг знаходиться на такому екстремальному рівні, що їх рішення дуже налаштовані та точно налаштовані на цей рівень трафіку і насправді не однакові. більше технологій.
Рятхал

1
Facebook також використовує PHP. Зауважте також, що це означає, що стосується масштабованості, а не продуктивності, але ви знаєте різницю, правда? Інший приклад - безкоштовний, який переписав свій веб-сайт у PHP з Java, з міркувань масштабованості.
deadalnix

"В даний час більшість кодів PHP у Mediawiki у Фонді Wikimedia використовує компілятор HHVM JIT, хоча деякі сервіси продовжують використовувати PHP Zend Engine." en.wikipedia.org/wiki/Wikipedia:FAQ/Технічний ось що 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 були розроблені для OOP з самого початку, тоді як OOP у PHP дещо задумливий. PHP представив простори імен зовсім недавно, і вони обмежені та незграбні порівняно з тим, що можуть запропонувати .NET та Java. Програмування в бізнес-стилі зазвичай сильно покладається на OOP, що робить PHP меншим кандидатом.

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

Це не означає, що PHP непридатний для великих проектів - він просто не впорядковується з програмованим типом "підприємство". Її сильні сторони полягають в іншому місці, і якщо ви можете використовувати їх, ви можете так само легко створювати масштабні програми, як ви могли використовувати будь-яку іншу веб-технологію.


2
Один невеликий кайф, ви можете отримати спільний хостинг ASP.NET за тією ж ціною, що і спільний хостинг LAMP. Проблема полягає в тому, що більшість людей, які шукають, перебувають на ринку для малого та середнього бізнесу та коштують дорожче.
jfrankcarr

+1, це дуже добре сказано та узагальнено. Вузьким місцем для більшості погано працюючих програм є рідкість мови.
ГрандмайстерB

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 і навпаки, або повністю переходити з однієї на іншу мову. Ймовірно, вам доведеться внести деякі зміни, але коли вони продовжують працювати над цим, він стає все кращим і кращим.
Моя думка, вони з’ясували, що існує середній коефіцієнт 2,5 швидкості на користь C # (або .NET взагалі, VB зробив би те саме, що це MSIL врешті-решт).
Перевірте їх тести за допомогою Wordpress, це привернуло багато розробників.

Зараз ми його ще не бачили, але завжди знайдеться чувак, який збирається сказати вам, що FaceBook написаний на PHP. Неправильно. Спочатку це було, поки вони не зрозуміли свою помилку, і написали HipHop, щоб перетворити її на C ++.

EDIT: Очевидно, що останній блок незрозумілий, так що я мав на увазі, що FaceBook IS написаний на PHP, але HipHop робить його РАБОЧОМ як C ++, щоб поліпшити загальну швидкість, ЗАЩО PHP повільно.

2) Безпека: Як уже було зазначено, PHP має довгу історію проблем безпеки.

3) Час розробника: зробити веб-сайт в PHP, як правило, простіше, особливо з наявними рамками та всіма "доступними для розробників сайтів". Створення хорошого, надійного та безпечного веб-сайту PHP - це вже інша історія.


Що стосується речі Facebook / HipHop, вона не сильно змінюється. Вони все ще пишуть заяви PHP, чи не так? Також є компілятор PHP для Java. Якщо я компілюю з ним весь свій PHP-код, чи означає це, що мій сайт справді написаний на Java?
Яцек Прусія

Це не означає, що це Ява, це означає, що воно виконується як таке.
Луї Котманн

Гаразд, ти маєш рацію, але чи можу я все-таки стверджувати, що мій сайт написаний на PHP? Якщо так, то будь-хто може також заявити, що Facebook написано на PHP. Іншими словами, все зводиться до того, як ви розумієте термін "мова програмування". Це лише поєднання дійсних тверджень або це також середовище виконання. Я віддаю перевагу першому значенню, і тому річ HipHop для мене не сильно змінюється. Настільки, що я чувак, який ви згадали :)
Яцек Прусія

Добре, я зроблю це зрозумілішим. Але для запису я впевнений, що більшість читачів зрозуміли мою думку.
Луї Котманн

Не було помилкою спочатку писати Facebook на PHP. Коли вони виявили, що вона не може йти в ногу зі масштабованою здатністю, яку вони побачили, вони вирішили проблему за допомогою HipHop. Я думаю, це означає, що використання PHP - дуже хороший варіант для всіх веб-сайтів. При цьому Slashdot використовує прямий perl, і він вирішив проблему масштабу, wikipedia використовує звичайний PHP, і це також не має проблем зі масштабом.
gbjbaanb
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.