PHP vs. C CGI для небольших веб-сервисов - PullRequest
6 голосов
/ 01 июля 2011

Я создаю небольшой веб-сервис, к которому будут обращаться только машины, а не пользователи, которые просто принимают строку запроса и выполняют несколько запросов MySQL.Я решил написать код на PHP, потому что он прост и легок в написании и хорошо выполняет свою работу.Однако мой босс хочет, чтобы мы записали его как CGI на C (используя FastCGI), потому что он говорит, что это будет быстрее и будет использовать меньше памяти.Я не очень заинтересован в этой идее по нескольким причинам:

  • Кажется, что MySQL API для C имеет гораздо больше вызовов, чем эквивалентный PHP, и требует гораздо большей обработки ошибок.
  • Манипулирование строками в C несколько сложное и грязное.
  • Код в C почти в 3 раза длиннее эквивалентного кода в PHP и выглядит довольно грязно, с большой обработкой ошибок.

Но это только мое мнение.Какие еще факторы я должен принять во внимание?Является ли C лучшим инструментом для этой работы?Или это PHP?

Ответы [ 8 ]

3 голосов
/ 01 июля 2011

Если вас беспокоит скорость (или вашего начальника), проверьте сервер G-WAN , который позволяет вам писать C-скрипты. На форуме образцы MySQL . Это будет намного быстрее , чем FastCGI (который должен пересекать границы процесса через сокеты).

2 голосов
/ 01 июля 2011

Некоторые замечания по этому поводу:

  • Гораздо проще реализовать любой веб-сервис на PHP, чем на C, поскольку PHP - это язык, предназначенный для работы в Интернете, а C - общий язык.
  • C компилируется, и это делает его намного быстрее, чем программы PHP, но если вы действительно беспокоитесь об оптимизации (ваша программа потребляет много ресурсов, а ваше оборудование очень ограничено), вы можете использовать PHP-ускорители, которые компилируют исходный код( например )
  • Доступ к базам данных одинаково ограничен на обоих языках, поэтому, если вашей программе требуется много доступа к БД, она будет иметь аналогичную производительность.
  • Более важно: босс есть босс:)
1 голос
/ 01 июля 2011

Спросите своего босса, не будет ли лучше, если вы используете C ++.

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

И попробуйте fastcgi ++ . У вас также есть boost и другие библиотеки, которые могут помочь вам быстрее делать скучные вещи и сконцентрироваться на ЧЕМ ВОПРОСАХ.

А если приложение выполняет много вычислений, неплохо сделать это на C / C ++.

  • В противном случае напомните своему боссу, что обычно, независимо от языка, приложение не замедляется вычислениями, а "ожиданием ресурсов" - наиболее распространенными являются ожидание диска или ожидание базы данных - что происходит независимо от языка .
  • Напомните своему боссу, что для скорости вы можете получить улучшение на 10-60%, используя apc .

Если он просто не хочет, тогда у вас есть два варианта:

  • бросить работу
  • делать, как он просит вас

Почему C ++, а не C

Это правда, что с хорошими соглашениями о кодировании вы можете написать управляемый код также на C.

Но с C вы все еще обладаете многословностью обработки ошибок, в отличие от исключений, NUL-концевых строк, карт или чего-то еще. Я тоже люблю C больше, чем C ++, но давайте посмотрим правде в глаза: здесь речь идет не о языке, а о менталитете деспота (босса), с которым нужно бороться с аргументами и научиться прислушиваться к своим сотрудникам.

1 голос
/ 01 июля 2011

ИМХО, если большая часть обработки выполняется MySQL, нет необходимости писать этот код на C, потому что разница незначительна, но если ваш код выполнит много обработки, имеет смысл послушать вашего босса и сделать это в C

0 голосов
/ 01 июля 2011

вздрогнуть ... Вы должны покинуть компанию. Нельзя допускать, чтобы босс занимался микроменеджментом рабочих ... если только он не является гуру программирования компании:)

0 голосов
/ 01 июля 2011

Скорее всего, ваше приложение связано с вводом / выводом. Так что это даже не будет заметно быстрее в C.

0 голосов
/ 01 июля 2011

У вас нет выбора, потому что ваш босс хочет этого.Если вы не можете кодировать на C, тогда просто C это.

0 голосов
/ 01 июля 2011

Оба инструмента в порядке.Если ваш босс хочет C, сделайте это в C.

...