PHP to C

Статус
В этой теме нельзя размещать новые ответы.

clevel

Новичок
PHP to C

Написал крупный проект на PHP+MYSQL+Javascript с использованием сессий, куков... встал вопрос производительности... помимо железа хотелось бы поработать с самим кодом, например, переписать его на си и скомпилить бинарник... как ивдно из обсуждений, раз в 5 скорость выполнения должна увеличиться...
однако вопрос: где можно почитать по поводу написания таких вещей на си?
 

DiMA

php.spb.ru
Команда форума
так нет ничего проще - пишешь прогу на Си, выкладываешь в cgi-bin или подобную папку и все готово

прога при запуске через аргументы получает QUERY_STRING, а из stdin пост запрос. Нужно только в Си подключить модуль регов, чтобы было проще парсить QUERY, а дальше все что надо пишешь браузеру через printf. Только муторное это дело писать на Си для веба, разве что задача простая и даст эффект.
 

clevel

Новичок
Автор оригинала: DiMA
так нет ничего проще - пишешь прогу на Си, выкладываешь в cgi-bin или подобную папку и все готово

прога при запуске через аргументы получает QUERY_STRING, а из stdin пост запрос. Нужно только в Си подключить модуль регов, чтобы было проще парсить QUERY, а дальше все что надо пишешь браузеру через printf. Только муторное это дело писать на Си для веба, разве что задача простая и даст эффект.
1.Где можно почитать про:
1.1.коннект к мускулу из си либо как обойтись без мускула (например, взять их исходники и необходимую часть прикомпилить к проекту)
1.2.как работать с сессиями и куками
2.Задача нетривиальная, однако все алгоритмы написаны, остается только их переписать с пхп на си. Однако возникает вопрос времени, потраченного на написание и выигрыш во времени исполнения...
 

Crazy

Developer
Если на вопрос "где прочитать про коннект к мускулу из си" у тебя ушло более 30 секунд и пришлось писать в форум, то мой тебе совет: оставь эту затею.

Ты уверен, что тебе нужно повышать скорость в 5 раз?
 

clevel

Новичок
Автор оригинала: Crazy
Если на вопрос "где прочитать про коннект к мускулу из си" у тебя ушло более 30 секунд и пришлось писать в форум, то мой тебе совет: оставь эту затею.

Ты уверен, что тебе нужно повышать скорость в 5 раз?
1.Если бы я все знал, то не стал бы вообще спрашивать в форуме
2.скорость действительно надо повышать 0.2-2 секунды в среднем, это не дело. Надо, чтобы 01. максимум было...
3.dll, как я понимаю, один раз в память запускается и больше не грабит ее. Такой вариант очень мне импонирует, так как у меня много юзверов...
4.Всему надо когда-то учиться... я знаю основы си, другое выучу в процессе работы...
5.к мускулу надо через одбц скорее всего коннектиться... но насколько я знаю, это очень долгое (по времени исполнения) решение. Вот и спросил, может есть другие варианты...
 

Crazy

Developer
Не нужно принимать мой так близко к сердцу -- он дан не ради наезда.

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

Скорость можно повысить не только переписыванием на Си, но и еще тремя способами:

1. Увеличение скорости компа.
2. Переписывание на Perl с использованием mod_perl. Получится как раз то, чего ты хочешь от dll.
3. Проанализировать свою программу и попытаться изменить алгоритм.

Решения даны в порядке возрастания эффективности.
 

timlenka

Guest
"где прочитать про коннект к мускулу из си"

Поль Дюбуа. MySQL
Глава 6. Программный интерфейс MySQL C API
Приложение Е. Программный интерфейс приложений С.
 

clevel

Новичок
Автор оригинала: Crazy
Если ты хочешь сделать эту работу исключительно в целях освоения Си -- ты выбрал неплохой способ. Если хочешь получить результат -- будет хреново. Ничего личного.

Скорость можно повысить не только переписыванием на Си, но и еще тремя способами:

1. Увеличение скорости компа.
2. Переписывание на Perl с использованием mod_perl. Получится как раз то, чего ты хочешь от dll.
3. Проанализировать свою программу и попытаться изменить алгоритм.

Решения даны в порядке возрастания эффективности.
1.это коммерческий продукт, мой энтузиазм не является чисто духовным. Нсли я владею основами си и неплохо знаю пхп, то почему ты считаешь, что переписывание на си - ъто хреновый результат оприори? (без личных обид)
2.перл я не знаю, гланул в учебник - си думаю легче будет подучить...
3.dll на порядок быстрее будет, чем перл и т.д.
4. железо само собой, а программа тоже должна летать...
5.решил isapi использовать, вот только не знаю, под апачем будет работать (win и Unix)? сейчас юзаю MSDN
Еще вопросы появились:
6.как работать с куками? с мсдн видно, что работает такая функция InternetSetCookie, однако будет это все работать с апач под юних/линукс?
7.есть isapi/nsapi, однако на visual c 6.4 я увидел только isapi.
Означает ли это, что isapi будет работать только под IIS?
 

Crazy

Developer
Автор оригинала: clevel
Нсли я владею основами си и неплохо знаю пхп, то почему ты считаешь, что переписывание на си - ъто хреновый результат оприори? (без личных обид)
Лишь потому, что более 90% времени т потратишь на освоение С. Впрочем -- не только C. По твоим вопросам видно, что все те нюансы вебовских технологий, от которых тебья защищал PHP, на тебя уже сваливаются. А читать документацию лень, не правда ли? :)

2.перл я не знаю, гланул в учебник - си думаю легче будет подучить...
IMHO, PHP в куда большекй степени похож на perl, чем на C.

3.dll на порядок быстрее будет, чем перл и т.д.
Ответ неверный. Или ты уже определил, что именно у тебя тормозит в скрипте?

4. железо само собой, а программа тоже должна летать...
Фраза лишена смысла. На i286 она у тебя все равно летать не будет. :)

Означает ли это, что isapi будет работать только под IIS?
Да.
 

lunizz

Guest
Автор оригинала: clevel

1.это коммерческий продукт, мой энтузиазм не является чисто духовным. Нсли я владею основами си и неплохо знаю пхп, то почему ты считаешь, что переписывание на си - ъто хреновый результат оприори? (без личных обид)
2.перл я не знаю, гланул в учебник - си думаю легче будет подучить...
3.dll на порядок быстрее будет, чем перл и т.д.
4. железо само собой, а программа тоже должна летать...
5.решил isapi использовать, вот только не знаю, под апачем будет работать (win и Unix)? сейчас юзаю MSDN
Еще вопросы появились:
6.как работать с куками? с мсдн видно, что работает такая функция InternetSetCookie, однако будет это все работать с апач под юних/линукс?
7.есть isapi/nsapi, однако на visual c 6.4 я увидел только isapi.
Означает ли это, что isapi будет работать только под IIS?
Perl легче чем С выучить ;)
Тут уж не скажи!

Perl - бейсикоподобный, единственное, синтаксис замутный.
С - реальный язык. Сложнее Perl раз в 30
 

clevel

Новичок
Автор оригинала: Crazy

Лишь потому, что более 90% времени т потратишь на освоение С. Впрочем -- не только C. По твоим вопросам видно, что все те нюансы вебовских технологий, от которых тебья защищал PHP, на тебя уже сваливаются. А читать документацию лень, не правда ли? :)


IMHO, PHP в куда большекй степени похож на perl, чем на C.


Ответ неверный. Или ты уже определил, что именно у тебя тормозит в скрипте?


Фраза лишена смысла. На i286 она у тебя все равно летать не будет. :)


Да.
1.доку читаю, только она вся на английском, многие моменты плохо из-за этого усваиваются..
2.как я понял, dll просто как модуль к апачу может работать, тот же самый phptoisapi....
3.dll просто подгружается и уже скомпиленный вариант, а mod_perl - встроенный в апач интерпритатор, которому еще надо интерпритировать код.... в моем вариант происходит выборка 10-15 запросов из БД, далее идет обработка этих данных в массивах, и вывод пользователю.... думается, что dll лучше, разъясни, если я не прав...
4.я в свое время си++ начинал изучать, правда не объектно-ориентированный.... думаю в этом уже плюс....
 

Crazy

Developer
Автор оригинала: clevel

1.доку читаю, только она вся на английском, многие моменты плохо из-за этого усваиваются..
...а чтобы переписатьв се на C, тебе придется немалдо этой документации прочесть.

Но главное в другом: ты занялся оптмизацией не выполнив профайлинг программы.

Оптимизировать нужно не то, что первое пришло в голову ("а перепишем-ка все на C"), а то, что вызывает торможение.
 

asp

Guest
Если важна производительность, для начала следует на нормальную ОС перейти. ISAPI использовать не рекомендую -- она не поддерживается почти никем кроме IIS.

Из Си (под Юникс) очень просто подключиться к MySQL (PGSQL и пр.), для этого надо подключить mysql/mysql.h (соотв. другой h-файл). API у MySQL простое, в доках все есть.

Только помни, что на Си писать раз в 10 сложнее. ;-)

Да, если возникнут вопросы -- пиши лично, я написал на Си с MySQL ну очень много программ, помогу.
 

clevel

Новичок
Автор оригинала: Crazy

...а чтобы переписатьв се на C, тебе придется немалдо этой документации прочесть.

Но главное в другом: ты занялся оптмизацией не выполнив профайлинг программы.

Оптимизировать нужно не то, что первое пришло в голову ("а перепишем-ка все на C"), а то, что вызывает торможение.
Алгоритм проги такой: делаем запрос к БД, получаем данные, анализируем, на основе этого делаем еще несколько запросов к БД, анализируем и еще раз делаем запросы...
Проблем с торможением запросов к БД нет, есть индексы и тому подобное, проблема именно в низкой скорости пхп...
поэтому и встал вопрос о переписи на си данного модуля...

Кстати, что такое профайлинг?
 

clevel

Новичок
Автор оригинала: asp
Если важна производительность, для начала следует на нормальную ОС перейти. ISAPI использовать не рекомендую -- она не поддерживается почти никем кроме IIS.

Из Си (под Юникс) очень просто подключиться к MySQL (PGSQL и пр.), для этого надо подключить mysql/mysql.h (соотв. другой h-файл). API у MySQL простое, в доках все есть.

Только помни, что на Си писать раз в 10 сложнее. ;-)

Да, если возникнут вопросы -- пиши лично, я написал на Си с MySQL ну очень много программ, помогу.
1. на сервере linux стоит.. а у меня на компе XP... для отладки хотелось бы ее использовать
2.Как именно мне писать на си под юниксом, если не использовать isapi . вопрос касается получения данных из get,post,cookies,sessions? Я прошу дать направление, где копать. Можно просто носом ткнут (желательно на русский ман).
3.насчет сложности понимаю... просто дело обстоит так... прога состоит из серверной части(PHP+Mysql) и частина локальной машине (Visual C++, Acess). Серверную часть я написал, сейчас буду писать на локальной часть, причем алгоритмы для локальной части будут реализовываться на Visual C++. Однако не удовлетворяет производительность пхп, хочу убить двух зайцев одновременно: написать библиотеку классов, которые реализовали алгоритмы как для локалки так и для серверной части...
4.мне главное создать болванку, которая может: получать данные из get,post, писать и получать данные из cookies,sessions, насчет коннекта к мускулу вроде нашел .h файлы и как подключать...., делать запросы.... а дальше я сам разберусь...
да, главное, чтобы это все заработало...
 

Crazy

Developer
Автор оригинала: clevel
Проблем с торможением запросов к БД нет, есть индексы и тому подобное, проблема именно в низкой скорости пхп...
Ты это ЗНАЕШЬ или просто предположил?

Кстати, что такое профайлинг?
Измерение временных характеристик различных частей программы. К примеру, это позволило бы знать ответ на вопрос "что на самом деле нужно оптимизировать".

Hint: незачем переписывать на C все. Не исключено, что достаточно небольшого фрагмента. И оформить его как модуль.
 

Crazy

Developer
Автор оригинала: clevel
4.мне главное создать болванку, которая может: получать данные из get,post, писать и получать данные из cookies,sessions, насчет коннекта к мускулу вроде нашел .h файлы и как подключать...., делать запросы.... а дальше я сам разберусь...
да, главное, чтобы это все заработало...
Болванка у тебя уже есть -- это сам PHP. Просто почитай его исходники.
 

clevel

Новичок
Ты это ЗНАЕШЬ или просто предположил?
я тестил при помощи замеров времени до и после выполения отдельных частей программы...

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