Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: PHP vs CGI
 
 автор: bronenos   (06.07.2007 в 14:48)   письмо автору
 
 

хочу сделать страницу с которой чат сможет забирать сообщения
но вот вопрос
для быстроты какой из этих методов выгоднее и удобнее?

   
 
 автор: SHAman   (06.07.2007 в 15:50)   письмо автору
 
   для: bronenos   (06.07.2007 в 14:48)
 

Не вижу вообще методов. PHP - язык программирования. CGI - сетевой шлюзовый интерфейс.

Если под CGI подразумевался Perl (частая ошибка), то могу сказать, что Perl работает быстрее. Тем более, когда нужно парсить текст. Тем более, если его много.

   
 
 автор: bronenos   (06.07.2007 в 16:29)   письмо автору
 
   для: SHAman   (06.07.2007 в 15:50)
 

я слышал что cgi это просто файлы на с++
а учитывая что с++ работает быстрее пхп то задумался. не выбрать ли его для своих целей

   
 
 автор: Faraon   (06.07.2007 в 16:34)   письмо автору
 
   для: bronenos   (06.07.2007 в 16:29)
 

По моему под расширением CGI может быть любой язык програмирования. Будь он perl или С++

   
 
 автор: bronenos   (06.07.2007 в 17:28)   письмо автору
 
   для: Faraon   (06.07.2007 в 16:34)
 

элементарная скомпилированная вещь
#include <iostream.h>
using namespace std;

int main()
{
  system ("chcp 1251");
  system ("cls");

  cout << "Проверка";
  return 0;
}

не работает. сервер дает ошибку (сервер а не программа)

   
 
 автор: SHAman   (06.07.2007 в 17:44)   письмо автору
 
   для: bronenos   (06.07.2007 в 17:28)
 

Попробуй так:
cout << "Content-type: text/html; charset=windows-1251;\n\n";
cout << "Проверка.";

Что касается C++, то это зря. Он медленнее. К тому же, для большинства веб-приложений достаточно процедурной парадигмы разработки. А C++ от C отличается только тем, что он объектно-ориентированный.

Короче, самая быстрая прога получится на C. (если не считать асм, естественно : ) )

   
 
 автор: bronenos   (06.07.2007 в 18:21)   письмо автору
 
   для: SHAman   (06.07.2007 в 17:44)
 

так тоже server error

   
 
 автор: Trianon   (07.07.2007 в 01:44)   письмо автору
 
   для: SHAman   (06.07.2007 в 17:44)
 

>Что касается C++, то это зря. Он медленнее.

Шутка, да?

   
 
 автор: SHAman   (07.07.2007 в 19:50)   письмо автору
 
   для: Trianon   (07.07.2007 в 01:44)
 

Никакая не шутка. Относительно C, C++ медленнее, потому что объетно-ориентирован. А если писать на C++ процедурно, то смысла я не вижу.

   
 
 автор: Trianon   (07.07.2007 в 01:38)   письмо автору
 
   для: bronenos   (06.07.2007 в 17:28)
 

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

Конечно он многое может не делать, но в отличие от скрипта на php - сформировать заголовок отклика полностью - его непреложная задача:
200 HTTP/1.1 OK
Content-Type: text/plain ; charset="windows-1251"
Content-Length: 10

Проверка

   
 
 автор: bronenos   (07.07.2007 в 09:13)   письмо автору
 
   для: Trianon   (07.07.2007 в 01:38)
 

вам не трудно будет написать какую нибудь простенькую программу выводящую Hi all?
а то не совсем понятно все что надо и как :)

   
 
 автор: Trianon   (07.07.2007 в 13:39)   письмо автору
 
   для: bronenos   (07.07.2007 в 09:13)
 


#include <stdio.h>

char body[] = 
"<HTML><HEAD><TITLE>test</TITLE></HEAD><BODY><H1>Hi All!</H1></BODY></HTML>" "\r\n";

int main()
{
    printf(
"200 HTTP/1.0 OK"                                     "\r\n"
"Content-Type: text/plain ; charset=\"windows-1251\"" "\r\n"
"Content-Length: %d"                                  "\r\n"
                                                      "\r\n"
"%s"                                                  "\r\n", 
      strlen(body), 
      body);
      return 200;
}


Или Вам нужен именно С++?

   
 
 автор: bronenos   (07.07.2007 в 15:29)   письмо автору
 
   для: Trianon   (07.07.2007 в 13:39)
 

спасибо, на с++ я перевести уж смогу...
правда я думал что первая строка
не 200 HTTP/1.0 OK
а HTTP/1.0 200 OK

а насчет .cgi?id=4
где мне прочитать значение ид?
полагаю что в argv массиве, втором аргумент, но как? в с++ нет ассоциативных массивов..

   
 
 автор: Trianon   (07.07.2007 в 17:07)   письмо автору
 
   для: bronenos   (07.07.2007 в 15:29)
 

как получить доступ к переменным окружения - представляете?
третий параметр main или вызов getenv()

Нету на уровне приложения никаких ассоциативнх массивов.
Есть переменная окружения QUERY_STRING и переменная окружения CONTENT-LENGTH -- оттуда и растут все ноги.

Печатайте список переменных окружения и вперед.

>правда я думал что первая строка HTTP/1.0 200 OK
это я напутал.

   
 
 автор: bronenos   (07.07.2007 в 17:46)   письмо автору
 
   для: Trianon   (07.07.2007 в 17:07)
 

getenv в каком файле?

   
 
 автор: Trianon   (07.07.2007 в 17:47)   письмо автору
 
   для: bronenos   (07.07.2007 в 17:46)
 

stdlib наверное

   
 
 автор: bronenos   (07.07.2007 в 17:48)   письмо автору
 
   для: Trianon   (07.07.2007 в 17:47)
 

пасиба, буду пробовать

   
 
 автор: SHAman   (06.07.2007 в 17:41)   письмо автору
 
   для: Faraon   (06.07.2007 в 16:34)
 

Еще раз говорю: CGI - это не расширение. Это ИНТЕРФЕЙС. Чтоб вы знали, ваш любимый php тоже использует вовсю этот интерфейс : )

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования