Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Компилятор PHP в байт код Си
Покинул форум
Сообщений всего: 83
Дата рег-ции: Окт. 2008
Помог: 0 раз(а)
Здравствуйте,
Есть несколько вопросов, для любопытных цели вопросов описал ниже.
1) PHP полностью написан на Си?
2) В момент выполнения код php транслируется в Си, а потом компилится в байт код Си?? Или сразу компилится в байт код??
3) Если верен первый результат, то логично что из PHP интерпретатора реально реализовать транслятор из php в Си, или нет??
4) Если нет, то в любом случае можно же создать официальный компилятор на в основе движка самого интерпретатора?
Цель моих вопросов в том, что хочу создать компилятор php -> Си -> байт код Си.
И реализовать на fastCGI, но при этом сохранить мелкоразмерные файлы подобия движков CMS, для возможного редактирование "на ходу", в данном случае "на ходу" это быстрое редактирование, компилирование и заливка мелких файлов.
Как мне сказали "тру-программеры" это повысит производительность не учитывая БД, -до коэффициента в 100 раз (СИшный байт-код).
Плюсы:
1) С помощью компилятора "php -> Си -> байт код Си" можно будет писать программы на php, но получать производительность байт кода языка Си без интерпретации(причем он будет в памяти висеть в случае с fastCGI).
2) Оставляя мелкоразмерные файлы можно так же будет мгновенно отлаживать небольшие файлы и быстро компилировать и заливать на сайт без остановки его работы (на подобие как сейчас с php, только нужно будет компилировать еще).
3) Компилятор поможет сообщать о некоторых ошибках сразу при компиляции, а не на сайте (а на модуле можно и уронить апачь)
4) Программистам поможет внедрять в код триал версии программы и предоставлять разработчикам его ограничивая по времени и скрывая исходный код, не боясь что его "кинут".
5) Получать высокую производительность на небольших хостингах. Тут не мне говорить как трудно бывает собрать на дедик обычным сайтам, а тут можно будет держать большой ресурс при маленьких хостинг-затратах.
6) Для, хостеров будет выгодней держать больше пользователей с той же нагрузкой. Сами представьте когда на мощном сервере можно уместить еще в 10-30 раз больше пользователей (следовательно и прибыль в 10-30 раз).
Единственный тормозящий ресурс тут будет база данных, но думаю можно будет реализовать кэш даже при динамичных изменениях (есть догадки).
Основная теория возможного выигрыша в том, что при быстром выполнение кода он будет меньше тратить процессорное время, а значит это процессорное время можно будет тратить даже на ту же БД или на сторонни задачи - что и есть выигрыш.
Жду вашего мнения, только скепсис и пессимизм просьба аргументировать.
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
PHP не является компилируемым языком, он интерпретируемый, Вы хотите сделать его компилируемым (то есть я уточняю, с чем же будет работать в итоге веб-сервер)
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
valenok
Отправлено: 27 Января, 2009 - 20:13:31
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
Во первых когда твой процесс будет постоянно висеть в памяти, то загруженность сервера будет больше
чем если бы утром вася запустил скрипт на твоем сайте, а вечером петя другой сайт на том же хостинге.
1. да.
2. байткод
3. см. 2
4. ничего не понял.. Что такое официальный компилятор на основе движка интерпретатора ?
Интерпретатор сам по себе это название разновидности компиляторов.
Теперь по поводу премуществ:
1. Мы выяснили что чтоб превратить php в C потребуется еще третий средний интерпретатор
2. Придётся останавливать все процессы, заливать новый код и запускать всё заново. Помимо того как делить на маленькие части я не понял.
3. Когда об ошибках сообщает не важно в принципе. Главное чтоб сообщил и ты исправил.
5,6 . За свой скрипт я не волнусь, потому что за него отвечает хостер, а он у меня хороший. А за хостера я не отвечаю. Пусть делает что хочет. Главное чтоб у меня хорошо работало.
Кроме того это ему видимо придётся ставить все эти расширения и программы чтоб работал мой СИ байт код.
4. Тоесть расчитано на то, что код в нередактиробельном виде ? Замечательно =)
Для этого вовсе не обязателег Си. Берешь zend engine и разделяешь на интерпретатор и виртуальную машину коими он является. Долго модифицируешь и в результате на сервера оставляешь
только виртуальную машину. Интерпретируешь у себя.
вообщем вывод один - гораздо проще, легче и быстрее выучить С. Особенно если РНР для тебя не новенькое.
----- Truly yours, Sasha.
Viraban009
Отправлено: 27 Января, 2009 - 21:00:17
Гость
Покинул форум
Сообщений всего: 83
Дата рег-ции: Окт. 2008
Помог: 0 раз(а)
valenok, прежде всего спасибо за нормальный ответ. Сколько раз не пользовался вашим форумом всегда получал адекватные ответы (разместил этот вопрос для пробы в двух других ресурсах, темы уже засрами в стиле юмора баша).
Цитата:
Во первых когда твой процесс будет постоянно висеть в памяти, то загруженность сервера будет больше
чем если бы утром вася запустил скрипт на твоем сайте, а вечером петя другой сайт на том же хостинге.
О самом fastcgi в php http://dklab.ru/chicken/nablas/49.html
fastcgi я привел как реализацию, там уже для себя можно выбрать что до как.
Цитата:
Что такое официальный компилятор на основе движка интерпретатора ?
За свои поиски нашел один популярный компилятор который у меня в режиме cgi работал тормазнее самого php в 1,5 - 2 раза. Поэтому хотелось бы на основе официального что то а не такой самопал =).
Цитата:
Помимо того как делить на маленькие части я не понял.
Это скорее реализация для слабоскоростного интернета, чтобы не заливать один cgi весом 10-20 мб, а заливать так же по файлам 50 - 100кб (вроде через API организуется, или может через отдельную подгрузку на подобие не препроцессора uploads)
Цитата:
В другом случае я бы вам предложил сразу браться за СИ и писать всё на нём.
Изначально так и хотел, это как раз бы была практика изучение этого языка. Но потом подумал реализовать некий транслятор PHP в Си (а потом и компилятор в одном лице).
Если начать прям с пустого писать веб сайты на Си то в конечном итоге оптимизации кода приведет наверно снова к нечто похожему интерпретатору PHP =)).Подобие "велосипеда" php тоже не интересно создавать.
Поэтому основная идея это транслятор из PHP в Си ну и потом компилятор.
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
Несколько раз прочитал пост и так и не понял, за счет чего должна производительность повышаться ? Если вы хотите выиграть на экономии трансляции из php в байт-код - то он и так акселераторами кэшируется (не видел ни одного хостинга без акселератора), на интерпретацию время почти не тратится. Если вы хотите как fast cgi процессы не закрывать - то для чего городьба с php? это чистый c++ fastcgi. Я что-то недопонимаю ?
Viraban009
Отправлено: 27 Января, 2009 - 23:00:02
Гость
Покинул форум
Сообщений всего: 83
Дата рег-ции: Окт. 2008
Помог: 0 раз(а)
Stierus
Акселераторы кушают память, процессорное время и прочие минусы в разных осбтоятельствах.
Бинарник бы работал лучше.
Основная цель трансляция php в С.
То есть к примеру взять этот форум и перевести си-байт код.
И грубо говоря получится что заказывать дедик придется не при 3-4к пользователей в сутки, а уже при 10 - 15к (ну так грубая аналогия)
.
Выигрышное процессорного временя может уже уйти на реализацию сложных задач - фичь для сайта или на ту же БД (пусть кушает сколько хочет).
И такой транслятор позволит и в дальнейшем писать на простейшем php, не утруждая себя изучением Си.
Viraban009 Я конечно не могу полностю знать всю суть вашей задумки...
И транслятор в C/C++ код это конечно тоже полезно и интересно...
Но может все-таки вам будет интересно воспользоватьс услугами ZEND ENCODER + ZEND OPTIMISER
Вы также получите защищенный скопмилированный байт-код и кстати эту технологию применяются в некоторыз платный CMS
Stierus
Цитата:
Если вы хотите как fast cgi процессы не закрывать - то для чего городьба с php? это чистый c++ fastcgi.
Да это батенька уже скорее к написанию *никсовых демонов относится
ИМХО писать незакрываемые PHP программы не есть очень гут уж если что писать демоны на Perlе
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
Цитата:
Stierus
Акселераторы кушают память, процессорное время и прочие минусы в разных осбтоятельствах.
Бинарник бы работал лучше.
Не мог бы описать, как ты представляешь работу акселератора, как работу "бинарника" и чем второе выигрышнее первого ? А то, может, я просто не совсем понял твою задумку, но пока, действительно, не вижу, на чём выигрыш.
OFF TOP
Цитата:
ИМХО писать незакрываемые PHP программы не есть очень гут уж если что писать демоны на Perlе
Почему не гут ?
Гость
Отправлено: 28 Января, 2009 - 11:10:30
УДАЛЁН
Цитата:
Почему не гут ?
Попробую аргументировать
1 PHP изначально предназначен всетаки для работы из-под Apache (Ну или из-под CGI) а Perl изначально наоборот
2 Инструменты для работы с сетью в Perlе получше чем в PHP да и работа с процессами особенно под *никсы там гораздо лучше (А демоны часто взаидодействую с дуригми процессами)
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Соглашусь в плане работы с сетью, а так же в том, что Perl куда лучше работает с процессами (была, помнится, необходимость сделать нормальный форк - мучался на PHP, в итоге сделал только псевдомногопоточность)
Однако в плане time_limit .. все решается соответствующими настройками.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Джур
Отправлено: 28 Января, 2009 - 12:23:58
Посетитель
Покинул форум
Сообщений всего: 423
Дата рег-ции: Март 2007
Помог: 0 раз(а)
Кстати... А что если человек хотел транслятор с РНР на Си... Следите за руками... раааз, а вот и...
пример из жизни
Помню в универе нашем, матфаковцы все писали на паскале, а потом транслировали в Си и сдавали преподу... Ибо 3-и курса их учили паскалю, а потом препод сменился.
Возможно чел хотел автоматический транслятор+компилятор... Запускается РНР разборщик, смотрит на РНР код, переводит его на СИ, затем скармливает с предустановками GCC, и бинарники складывает в кеш...
И собственно выполняется уже не РНР файл а скомиленный из него бинарник.
Покинул форум
Сообщений всего: 83
Дата рег-ции: Окт. 2008
Помог: 0 раз(а)
Джур пишет:
Кстати... А что если человек хотел транслятор с РНР на Си...
Следите за руками... раааз, а вот и...
пример из жизни
Помню в универе нашем, матфаковцы все писали на паскале, а потом транслировали в Си и сдавали преподу... Ибо 3-и курса их учили паскалю, а потом препод сменился.
Возможно чел хотел автоматический транслятор+компилятор... Запускается РНР разборщик, смотрит на РНР код, переводит его на СИ, затем скармливает с предустановками GCC, и бинарники складывает в кеш...
И собственно выполняется уже не РНР файл а скомиленный из него бинарник.
Покинул форум
Сообщений всего: 423
Дата рег-ции: Март 2007
Помог: 0 раз(а)
ну. как говорится.
Цитата:
To do the feasibility study for a PHP to C converter
Осталось только подождать.
Хотя если ждать не хочется, написать транслятор можно вполне, это, для основных функций, по силам одному человеку хорошо знающему оба языка.
Резюмирую
Сейчас все компиляторы для РНР, работают как VB6, что очень медленно. Если же РНР можно будет компилировать "по настоящему", это реально может понравится многим "не web" программистам.
Viraban009 Я конечно не могу полностю знать всю суть вашей задумки...
И транслятор в C/C++ код это конечно тоже полезно и интересно...
Но может все-таки вам будет интересно воспользоватьс услугами ZEND ENCODER + ZEND OPTIMISER
Вы также получите защищенный скопмилированный байт-код и кстати эту технологию применяются в некоторыз платный CMS
ZEND ENCODER & Co это точно не то что вам надо?
Viraban009
Отправлено: 29 Января, 2009 - 09:36:42
Гость
Покинул форум
Сообщений всего: 83
Дата рег-ции: Окт. 2008
Помог: 0 раз(а)
JustUserR
в действительности я не ищу этот транслятор, я хочу сам его написать для тренинга изучения языка С (ну то есть и изучение и чтение кода в данном случае PHP интерпретатора).
Первое что я хотел от темы это получить ответы на вопросы 1-4 (ответы получил).
Второе узнать мнение по моей цели, вопросы 1-6 (ответы получил).
Ну и перестраховаться если есть уже готовые трансляторы в Си (чтобы велосипед не изобретать).
Принципе на все вопросы я получил ответы, тему можно сносить в архив (или закрыть).
PS Сам процесс такое моего проекта пройдет в длительном времени, так как является по большей части стимулом для изучение Си.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.