PHP Compiller

PHP Compiller

Меня интересует несколько ламмерский вопрос:
Я слышал, что для PHP появились компиляторы,
кто может посоветовать какие и где найти.

Так же интересуют программы кэширования.

Если кто даст ссылку на статьи по ним,
большое thanks.
 

SiMM

Новичок
> кто может посоветовать какие и где найти.
Интересно, зачем?

> кто может посоветовать какие и где найти.
А это то зачем в свете первого?
 

untied

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

- скрытость кода
- больше возможностей (!!!!!)
- выше производительность

Бывают и такие случаи. :D
 

SiMM

Новичок
Нечто, и при чём здесь PHP-компилятор?

-~{}~ 15.01.05 16:51:

untied, передай своему товарищу, что наиболее оптимальный по быстродействию код можно получить только если писать на ассемблере :) При этом не забывая про конвейеризацию & etc ;)
 

untied

Сдвинутый новичок
Originally posted by Frol
а теперь оспорь эти пункты.
Frol, а теперь упади и отожмись раз 150...

П.1 и п.3 бессмысленно оспаривать, потому что так оно и есть. Вопрос только в том, нужны ли эти возможности в программировании достаточно стандартных скриптов.

П.2 не оспорит только дурак. Ежу понятно, что у PHP больше встроенных возможностей. Для обработки картинок скрипту на C нужен libpng, libjpeg и т.д. Для обработки XML нужен libxml. Ну и так далее... Одна обработка строк на C займет кучу кода.

Есть возражения?
 

Frol

Новичок
Для обработки картинок скрипту на C нужен libpng, libjpeg и т.д.
у PHP нет встроенных возможностей для обработки графики.
всегда подключается GD extension.
Для обработки XML нужен libxml.
у PHP встроенная поддержка XML только примитивная (SAX Parser).
Одна обработка строк на C займет кучу кода.
это вообше не знаю как относится к возможностям.
 

Tigr

Новичок
Frol
- а вы судя по всему гостевую на С пишите ?
:)
Можно экскаватором ямки для посадки морковки копать, возможностей больше :)

Всему своё место
 

Frol

Новичок
Tigr
заметь, я придрался только к конкретным пунктам.
 

untied

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

А вот собирать простой cgi-скрипт на C, отыскав и подключив нужные библиотеки (типа libpng и libxml) -- занятие не из разряда приятных. Про работу со строками я молчу.
Специально для любителей геморроя. :D

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

Frol

Новичок
А вот собирать простой cgi-скрипт на C, отыскав и подключив нужные библиотеки (типа libpng и libxml) -- занятие не из разряда приятных. Про работу со строками я молчу.
Специально для любителей геморроя.
к какому Вашему пункту это относится?
 

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
к какому Вашему пункту это относится?
Сколько можно про эти пункты уже?

Может все пункты и верны, но время(стоимость) разработки явно неприемлима.

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

untied

Сдвинутый новичок
Originally posted by Frol
к какому Вашему пункту это относится?
Все нижеследующее является злостным OFF-ом специально для упертых афрофиннов...

Милейший Frol, описанное мной выше заключение относится к пункту 2. Разберем в деталях конкатенацию строк.

PHP предоставляет в этом плане прямо-таки невероятные возможности:
PHP:
$str_result = $str_1.$str_2;
Вариант на C будет выглядеть примерно так:
PHP:
char *str_1, *str_2, *str_result;
char *ptr;
int i;

// здесь создаются строки str_1 и str_2

str_result = (char*) malloc(strlen(str_1) + strlen(str_2));
ptr = str_result;
for (i = 0; i < strlen(str_1); i++)
{
    *(ptr++) = *(str_1 + i);
}
for (i = 0; i < strlen(str_2); i++)
{
    *(ptr++) = *(str_2 + i);
}

// готово: в str_result наконец-то получилось соединение строк

free(str_result); // не забываем очищать память!
Сравнение строк в PHP так же предоставляет фантастические возможности:
PHP:
if ( $str_1 == $str_2 ) { /* код */ }
Любители спорить по любому поводу могут самостоятельно написать аналог этого кода на C.

Надеюсь, дальнейшие объяснения и сравнения (к примеру, про регулярные выражения в PHP и C) уже излишни... По большому счету веб-скрипты работают в первую очередь именно со строками.

У афрофиннов еще есть возражения по поводу пунктов и сравнения возможностей PHP и C? ;)
 

McLay

PHP5 BetaTeam
Блин, как же меня задолбали все эти обсирательства.
Объясняйте хотя бы над чем сметесь. :)
 

MuXa247

Новичок
Originally posted by untied
Все нижеследующее является злостным OFF-ом

str_result = (char*) malloc(strlen(str_1) + strlen(str_2));
ptr = str_result;
for (i = 0; i < strlen(str_1); i++)
{
*(ptr++) = *(str_1 + i);
}
for (i = 0; i < strlen(str_2); i++)
{
*(ptr++) = *(str_2 + i);
}

// готово: в str_result наконец-то получилось соединение строк

free(str_result); // не забываем очищать память!
[/PHP]
Любители спорить по любому поводу могут самостоятельно написать аналог этого кода на C.

PHP:
#include <string.h>
strcat(str_1, str_2); // присоединение одной сроки к другой
strcmp(str_1, str_2); // сравнение строк
 

su1d

Старожил PHPClubа
McLay, сравни:
PHP:
for (i = 0; i < strlen(str_1); i++) { *(ptr++) = *(str_1 + i); }
и
PHP:
for (p=str_1; *p; *(ptr++) = *(p++)); *ptr = 0;
hint: сколько "пробежек" по строке выполняется в каждом случае?
hint2: strlen() -- это всегда "пробежка".

хотя, можно ведь со строками работать и так (Ц++):
PHP:
#include <string>
#include <iostream>

using namespace std;

int main(int argc, char** argv) {
	string a("abc");
	string b("def");

	string c = a + b + "ghi";

	cout << c << endl;
	return 0;
}
-~{}~ 18.01.05 10:42:

SkyCat,
по-моему, сегфолт как раз-таки будет в первом случае.
нолик в конце никто не прописал, а malloc() кажется не обязан заполнять выделяемую область нулями.
 
Сверху