Просмотр полной версии : Bambalam PHP EXE Compiler/Embedder 1.21
Компилируем PHP в Win приложения
Что нам понадобится скачать:
1. winbinder (http://winbinder.org/) - Фреймворк для разработки ГУИ, легкий в использовании.
Скриншот программы (http://winbinder.org/pic/fe_big.png)
2. Bambalam PHP EXE Compiler/Embedder (http://www.bambalam.se/bamcompile/) - Компилятор PHP скриптов. Качаем последнюю версию.
Мини фак по использованию:
Usage:
bamcompile [-options] infile.php [outfile.exe]
bamcompile [-options] project_directory mainfile.php [outfile.exe]
bamcompile projectfile.bcp
Options:
-w Hide console window for windowed applications
-c Compress output exe (using UPX)
-d Do not encode PHP files
-e:extension.dll Embed and use PHP extension
-i:icon.ico Add icon to exe
Далее будет подробно...
3. UPX (http://upx.sourceforge.net/) - Компресор, чтоб наше приложение на выходе было не таким весомым. В bamcompile он уже есть, но я качал последнюю версию с SVN'a.
4. Иконка =) для нашего приложения, допустим эта - ЙА ИКОНКО (http://grabberz.com/favicon.ico)
5. php_winbinder.dll - библиотека для создания окон, это нужно для того что в некоторых версиях bamcompile к примеру в последней версии на данный момент 1.21 некоректно работает с окнами и создает нерабочие приложения, данная либа решает эту проблемму.
Подготовка
1. Создаем на Диске C: файл cmd.bat с содержимым:
cmd.exe
2. Создаем там же папку bamcompile, в нее кидаем:
bamcompile.exe - компилятор
favicon.ico - иконку
php_winbinder.dll - библиотеку
upx.exe - упаковщик
И обязательно папку include из установленой программы WINBINDER по умолчанию путь к ней C:\WinBinder\phpcode\include в етой папке класс для работы с Формами.
Вот в принцыпе и все. Перейдем к небольшому примеру:
Пример
1. Запускаем наш cmd.bat в него закидываем bamcompile.exe[пробел]
Теперь нужно указать все параметры:
2. Ставим иконку:
-i:C:\bamcompile\favicon.ico[пробел]
Подсказка: в окно консоли можно закидывать файлы, и путь будет прописываться автоматом, ненужно писать все пути вручную.
3. Добавляем библиотеку
-e:C:\bamcompile\php_winbinder.dll[пробел]
4. Далее указываем что ето Оконное приожение а не консольное (-w) и то, что мы хотим его запаковать пакером UPX (-c)
-w -c[пробел]
5. Указываем путь к скрипту который компилим:
C:\bamcompile\calculate.php
Готово, если сделали все правильно, то в папке где был скрипт появится EXE файл, упакованый и с иконкой. На скрине удачно выполненый нерультат:
http://s12.radikal.ru/i185/0907/cf/cd0762dbf65a.png
Для примера я взял готовый php скрипт, с коментариями. Скрипт скапипизжен с http://www.codenet.ru/webmast/php/PHP-Compiler-EXE/
<?php
// Подключаем основную библиотеку
include "include/winbinder.php";
// Даём метки окнам редактирования
define('IDC_EDITBOX1002', 1002);
define('IDC_EDITBOX1003', 1003);
// Рисуем окошко
$winmain = wb_create_window(null,
AppWindow,
'MD5 Hash Generator by S1B [SBT]',
WBC_CENTER, WBC_CENTER, 315, 134,
0x00000000, 0);
// Шпигуем окошко кнопками
# Рисуем рамочку
wb_create_control($winmain, Frame, '', 10, 10, 290, 85, 0, 0x00000000, 0, 0);
# Рисуем надписи (лейблы)
wb_create_control($winmain, Label, 'Текст:', 23, 35, 45, 15, 0, 0x00000000, 0, 0);
wb_create_control($winmain, Label, 'Hash:', 23, 65, 45, 15, 0, 0x00000000, 0, 0);
# Рисуем окошки редактирования (нижнее будет неактивным), и загоняем их данные в переменные
$text=wb_create_control($winmain, EditBox, '', 78, 30, 210, 20, IDC_EDITBOX1002, 0x00000000, 0, 0);
$hash=wb_create_control($winmain, EditBox, '', 78, 60, 210, 20, IDC_EDITBOX1003, 0x00000040, 0, 0);
// Две необходимые надписи =)
wb_set_handler($winmain, "process_main");
wb_main_loop();
function process_main($window,$id) {
# Объявляем данные окошек редактирования глобальными
global $text,$hash;
switch($id) {
case IDC_EDITBOX1002:
wb_set_text($hash,md5(wb_get_text($text)));
break;
case IDCLOSE:
wb_destroy_window($window);
break;
}
}
?>
В результате имеем программу с приятным интерфейсом
http://www.codenet.ru/webmast/php/PHP-Compiler-EXE/3.gif
Все файлы, можно скачать с моего архива - http://b3.grabberz.com/files/bamcompile.rar [3mb]
b3 (c) Спешинал для недовольного Pashkela :D
BiG_][aKeR
19.09.2009, 20:15
классно,вот только я так понял этот пхп скрипт написан специально для этого компилятора,а мне например нужно чтоб самый обычный пхп скрипт взял и скомпилировал в exe...
zifanchuck
19.09.2009, 20:31
Тоже интересует. обычный пхп скрипт можно перевести в екзешник и чтобы он нормально выполнялся? Тоисть и курл работать будет и все остальное?
и еще такой вопрос. скомпилил я допустим екзешку если ее с другого комапа запустить то он будет работать? или нужно чтобы ети библиотеки были на компе или че там?
Сейчас вот сижу и дуплю это,подскажите кто знает,как тут сделать подобие этого <input type="file" name="Filedata">,тоисть выбор файла с кнопочкой "Обзор"...
Pashkela
26.09.2009, 21:37
очень просто, примеры есть в winbinder , пункт 1 из первого поста. Когда скачаешь, загляни в папочку "\phpcode\examples" и у тебя глаза на лоб вылезут от открывшихся переспектив:)
А у меня отказывается работать :(
Делаю всё по инструкции, в логах написано что все ОК и *.exe создаётся, но когда его открываю, то ничего не происходит :(
Pashkela
27.09.2009, 13:29
покажи код, который компилишь
Код "калькулятора" из первого поста
Вот логи:
Bambalam PHP EXE Compiler/Embedder 1.21
Windowed application
Compress
Mainfile: calculate.php
Outfile: calculate.exe
Encoding and embedding calculate.php
Embedding php_winbinder.dll and adding it to extension loader
Compressing final exe..
Compression done
calculate.exe created successfully!
Думал у меня с вистой что-то не так, запустил на ХП, тот же результат :(
Pashkela
27.09.2009, 14:55
ну ты выбрал для первогот раза, молодец, чтобы скомпилировать калькулятор, у тебя должны быть:
В отдельной папке лежать файлы и папка:
- файл calculate.bcp
; Bamcompile example project file
mainfile calculate.php
outfile calculate.exe
compress
windowed
icon calculate\hal.ico
embed calculate
extension calculate\php_winbinder.dll
- файл compile.bat
bamcompile calculate.bcp
- файл bamcompile.exe
- папка calculate, в ней:
------файл php_winbinder.dll
------файл calc.rc
------файл calculate.php
------файл hal.ico (файл иконки для программы)
------папка include, в ней:
-----------файл winbinder.php
Все заработало, спасибо :)
Вы добавили слишком много репутации в последние 24 часа. Попробуйте попозже.
Pashkela
28.09.2009, 15:24
CURL+bamcompile
1. Качаем нужные библы тут (bug-track.ru/prog/php_curl.rar)
2. Для компиляции вашего php-скрита с curl положите рядом со скриптом все файлы, что вы скачали - php_curl.dll, libeay32.dll, ssleay32.dll
3. Сам bamcompile.exe должен тоже лежать рядом (т.е. вообще все файлы в одной отдельной папке)
4. Создайте и запустите такой create.cmd:
cmd /k bamcompile -e:php_curl.dll -c ваш_скрипт.php ваш_скрипт.exe
5. Готово, curl работает.
PS: Ограничения - если вы убираете получившийся .exe в другую папку, всегда придется с собой таскать php_curl.dll, libeay32.dll, ssleay32.dll - без них программа работать не будет. Т.е. они всегда должны лежать рядом с .exe
Tested on Bamcompile 1.21 + Win XP
Deathdreams
02.11.2009, 14:29
Как тут сделать в окне <textarea> с полосой прокрутки?
Как тут сделать в окне <textarea> с полосой прокрутки?
Правильно построенный вопрос - 50% ответа.
Deathdreams
02.11.2009, 14:54
m0Hze
Это тебе не php :)
Тут от PHP остались только функции, а оформление по-другому строится.
erihtoney
13.11.2009, 14:12
Извращение, зачем тогда гребаный delphi, всеми любимый си++, java и другие языки?
login999
13.11.2009, 14:34
Извращение, зачем тогда гребаный delphi, всеми любимый си++, java и другие языки?
Для того чтоб мы занимались онанизмом, глядя на них :)
Блин,когда начинает исполняться скрипт то окно с скриптом полностью зависает аж до его полного исполнения,что делать????
sleep(x);
Не помогает!((((
Pashkela
14.11.2009, 16:03
Для начала научиться юзать неблокируемые сокеты, если речь идет о парсинге чего либо с www
PS: Всё там работает, и работает довольно прилично, просто нет многопоточности. У меня даже есть SIPT5 практически рабочий на winbinder :)
Но скрипт на том же перле круче в разы, если не в десятки раз
Но чтобы юзать winbinder для серьезных задач - простыми знаниями на php не обойдешься, нужны годы практики и абсолютное понимание каждой функции
я юзаю тут curl,и пока полное исполнение именно php скрипта не пройдёт то он зависает!!! Пример:
function starter(){
sleep(10);
}
По нажатию кнопки старт в интерфейсе запуститься эта функция,и эти 10 секунд что он спит окно скрипта "Не отвечает"! Причём тут сокеты или что либо если даже sleep зависает...:(
Pashkela
14.11.2009, 16:15
curl не пойдет для таких целей - кури неблокируемые сокеты, или задавай конкретные вопросы, что именно не получается с сокетами, тогда будет конкретный ответ (куски кода обязательны, а также подробное описание той задачи, которую надо выполнить, а не общие твои домыслы)
PS: sleep - не выход, выполнение sleep есс-но влияет на работу всего приложения, т.е. если юзать sleep - то, пока пауза, ничего нажать не получиться. Тем более 10 секунд.
Вот функция с неблокируемыми сокетами которая подойдет для парсинга любой URL (кроме https):
function sql($url) {
$patern = "/^(http:\/\/)?([^\/]+)/i";
$source_host = preg_match($patern, $url, $rezz);
$host = $rezz[2];
$url1 = "GET $url\n"; // Тут GET можно поменять на POST, к примеру
$responce = "";
$timeout = 30; // На Ваше усмотрение
$fsock = fsockopen($host, 80, $errnum,$errstr,$timeout);
if ($fsock) {
$headers = $url1;
$headers .= "Host: $host\n";
$headers .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\n";
$headers .= "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\n";
$headers .= "Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\n";
$headers .= "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\n";
$headers .= "Keep-Alive: 500\n";
$headers .= "Connection: close\n";
$headers .= "Content-Type: application/x-www-form-urlencoded\r\n\r\n";
fwrite ($fsock,$headers);
stream_set_blocking($fsock, 0);
stream_set_timeout($fsock, $timeout);
while (!feof($fsock)) $responce .= fread($fsock,4096);
fclose ($fsock);
}
return $responce;
}
пример вызова:
$a = sql("http://rambler.ru");
Pashkela,плиз,можеш тогда мне сейчас сделать на неблокируемых сокетах аналог моей функции на php?
function curl($urlcurl,$postcurl,$cookiescurl){
$ch=curl_init ($urlcurl);
$ua = 'Opera/9.64 (Windows NT 5.1; U; ru) Presto/2.1.1';
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
curl_setopt($ch, CURLOPT_REFERER, $ref);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $PostData);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIE, $cookiescurl);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postcurl);
$page=curl_exec($ch);
return $page;
}
чтоб был вызов функцыи такой: sock("Ссылка URL","POST запрос вида s=1&hh=4","Кукисы");
Просто я с соксами не работал,всегда курлом обходился,как с ними работать хз,ну более чем такая функция мне и ненужно ничего.Спс
Pashkela
14.11.2009, 16:30
исправил предыдущий пост, изучай (там только куки вставить и пост-данные)
Просто я с соксами
сокс это вовсе не сокеты. Не путай фундаметнальные понятия. SOCKETS !== SOCKS
PS: Curl - для лохов. Всегда зри в корень протокола. Познаешь сокеты - захаваешь весь интернет. Шутка, но с очень большой долей правды
Пример на твоих соксах....
<?
include "include/winbinder.php";
define("ID_START", 100);
$mainwin = wb_create_window(null,AppWindow,'Тест зависания...',WBC_CENTER, WBC_CENTER, 600, 600,0x00000000, 0);
wb_create_control($mainwin, PushButton, "СТАРТ!", 20, 20, 560, 520, ID_START);
wb_set_handler($mainwin, "process_main");
wb_main_loop();
function process_main($window,$id) {
switch($id) {
case ID_START:
$a = sql("http://www.model.poltava.ua");
alert($a);
break;
case IDCLOSE:
wb_destroy_window($window);
break;
}
}
function sql($url) {
$patern = "/^(http:\/\/)?([^\/]+)/i";
$source_host = preg_match($patern, $url, $rezz);
$host = $rezz[2];
$url1 = "GET $url\n"; // Тут GET можно поменять на POST, к примеру
$responce = "";
$timeout = 30; // На Ваше усмотрение
$fsock = fsockopen($host, 80, $errnum,$errstr,$timeout);
if ($fsock) {
$headers = $url1;
$headers .= "Host: $host\n";
$headers .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\n";
$headers .= "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\n";
$headers .= "Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\n";
$headers .= "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\n";
$headers .= "Keep-Alive: 500\n";
$headers .= "Connection: close\n";
$headers .= "Content-Type: application/x-www-form-urlencoded\r\n\r\n";
fwrite ($fsock,$headers);
stream_set_blocking($fsock, 0);
stream_set_timeout($fsock, $timeout);
while (!feof($fsock)) $responce .= fread($fsock,4096);
fclose ($fsock);
}
return $responce;
}
function alert($textalert){
wb_message_box($window, $textalert, "Alert", WBC_INFO);
}
?>
Сайт выбрал который долго грузиться,сам посмотри...Пока сокс не выполниться,тоисть весь скрипт,ты ничего не можешь сделать...так же само если и место
$a = sql("http://www.model.poltava.ua");
вставить sleep(20);
он зависнет,или любую долгую операцию...
Pashkela
14.11.2009, 16:45
так и должно быть, ни в одном языке программирования при плохом конекте с сайтом скорости не жди. Многопоточный если даже будет скрипт - запустит 50 запросов и также будет висеть. А вот ТАЙМАУТ выставленный в функции позволит нажать кнопочку ровно через столько секунд, сколько таймаут.
PS: Еще раз - sleep - не выход. В любом языке программирования.
Пример на твоих соксах....
<?
include "include/winbinder.php";
define("ID_START", 100);
$mainwin = wb_create_window(null,AppWindow,'Тест зависания...',WBC_CENTER, WBC_CENTER, 600, 600,0x00000000, 0);
wb_create_control($mainwin, PushButton, "СТАРТ!", 20, 20, 560, 520, ID_START);
wb_set_handler($mainwin, "process_main");
wb_main_loop();
function process_main($window,$id) {
switch($id) {
case ID_START:
$a = sql("http://www.model.poltava.ua");
alert($a);
break;
case IDCLOSE:
wb_destroy_window($window);
break;
}
}
function sql($url) {
$patern = "/^(http:\/\/)?([^\/]+)/i";
$source_host = preg_match($patern, $url, $rezz);
$host = $rezz[2];
$url1 = "GET $url\n"; // Тут GET можно поменять на POST, к примеру
$responce = "";
$timeout = 30; // На Ваше усмотрение
$fsock = fsockopen($host, 80, $errnum,$errstr,$timeout);
if ($fsock) {
$headers = $url1;
$headers .= "Host: $host\n";
$headers .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\n";
$headers .= "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\n";
$headers .= "Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\n";
$headers .= "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\n";
$headers .= "Keep-Alive: 500\n";
$headers .= "Connection: close\n";
$headers .= "Content-Type: application/x-www-form-urlencoded\r\n\r\n";
fwrite ($fsock,$headers);
stream_set_blocking($fsock, 0);
stream_set_timeout($fsock, $timeout);
while (!feof($fsock)) $responce .= fread($fsock,4096);
fclose ($fsock);
}
return $responce;
}
function alert($textalert){
wb_message_box($window, $textalert, "Alert", WBC_INFO);
}
?>
Сайт выбрал который долго грузиться,сам посмотри...Пока сокс не выполниться,тоисть весь скрипт,ты ничего не можешь сделать...так же само если и место
$a = sql("http://www.model.poltava.ua");
вставить sleep(20);
он зависнет,или любую долгую операцию...
Ну извините меня,но зачем для таких простых целейю юзать php? Ведь тоже самое можно с средними знаниями написать на Сях,с многопоточностью(нормальн й!),или даже на дельфях.Но накой член,мучить компьютер бамкомпилами? Извращение,мне своего мнения не изменить :(
Или уж на крайний случай юзайте Perl, там тоже есть консольное окошко,тоже перед однокласниками можно понтонуться крутым софтом :(
тогда вставь место
$a = sql("http://www.model.poltava.ua");
цыкл долгий,например:
for ($i=$i; $i>-1; $bezk++){
echo $i;
}
в консоли будет видно что сам скрипт исполняеться нормально и без тормозов,выводит числа,а вот окно с интерфейсом всёравно зависает до исполнения пхп скрипта...Просто бамкомпиль я так понял росчитан на лёгкие скрипты,а если скрипт росчитан на постоянную роботу,тоисть всё время обрабатывать данные,то пока он их обрабатывает то и интерфейс зависший...выхода нету я так понял?
Ну извините меня,но зачем для таких простых целейю юзать php? Ведь тоже самое можно с средними знаниями написать на Сях,с многопоточностью(нормальн й!),или даже на дельфях.Но накой член,мучить компьютер бамкомпилами? Извращение,мне своего мнения не изменить :(
Или уж на крайний случай юзайте Perl, там тоже есть консольное окошко,тоже перед однокласниками можно понтонуться крутым софтом :(
жжошь:D,мы тут сейчас обговариваем зависание бамкомпиля,а ето самый елементарный пример показать его зависание,а как таково то у меня уже на нём написан спамер на 400 строк кода уже с полностью написаным интерфейсом;) Вот только фигня в том что если етого зависания не избавиться то 3 дня под ряд что я просидел за написанием скрипта етого пойдут в попу,ото где обидно будет,что сидел по 1 пикселю выставлял етот интерфейс только сутки!
Pashkela
14.11.2009, 16:57
Если ты не осознал/впитал то, что было писано выше - то да, выхода нет. Или просто недостаточно опыта. CURL тут не поможет. GUI на PHP требует высшей квалификации.
жжошь:D,мы тут сейчас обговариваем зависание бамкомпиля,а ето самый елементарный пример показать его зависание,а как таково то у меня уже на нём написан спамер на 400 строк кода уже с полностью написаным интерфейсом;) Вот только фигня в том что если етого зависания не избавиться то 3 дня под ряд что я просидел за написанием скрипта етого пойдут в попу,ото где обидно будет,что сидел по 1 пикселю выставлял етот интерфейс только сутки!
Что я могу сказать? Ты дурак. За 2 недели реально понять принцыпы Пер-ла,и писать на нем неплохие скрипты,не мучая людей и форум тупыми вопросами,про эту недоделаную конвертацию пхп в машинный код.Будь умнее,не трать время зря.Хочеш писать актуальный софт - пиши его на C++\C#\java, но никак не на php.Побереги свое время
не мучая людей и форум тупыми вопросами,если не ошибаюсь то ета тема именно об этой софтине...
а насчёт того что времени и нервов много потратил то ето реально так...не зря d_x мне говорил,не страдай фигней в виде етих бамкомпиль,нет же,не послушал...
Спс всем кароч,погнал просто на php переписывать:)
Хорошая статья.
А формы рисовать для бамкомпилера нужно вручную ? Нет каких либо тулз, как IDE для С++, delphi и прочих ?
curl не пойдет для таких целей - кури неблокируемые сокеты, или задавай конкретные вопросы, что именно не получается с сокетами, тогда будет конкретный ответ (куски кода обязательны, а также подробное описание той задачи, которую надо выполнить, а не общие твои домыслы)
PS: sleep - не выход, выполнение sleep есс-но влияет на работу всего приложения, т.е. если юзать sleep - то, пока пауза, ничего нажать не получиться. Тем более 10 секунд.
Вот функция с неблокируемыми сокетами которая подойдет для парсинга любой URL (кроме https):
function sql($url) {
$patern = "/^(http:\/\/)?([^\/]+)/i";
$source_host = preg_match($patern, $url, $rezz);
$host = $rezz[2];
$url1 = "GET $url\n"; // Тут GET можно поменять на POST, к примеру
$responce = "";
$timeout = 30; // На Ваше усмотрение
$fsock = fsockopen($host, 80, $errnum,$errstr,$timeout);
if ($fsock) {
$headers = $url1;
$headers .= "Host: $host\n";
$headers .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\n";
$headers .= "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\n";
$headers .= "Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\n";
$headers .= "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\n";
$headers .= "Keep-Alive: 500\n";
$headers .= "Connection: close\n";
$headers .= "Content-Type: application/x-www-form-urlencoded\r\n\r\n";
fwrite ($fsock,$headers);
stream_set_blocking($fsock, 0);
stream_set_timeout($fsock, $timeout);
while (!feof($fsock)) $responce .= fread($fsock,4096);
fclose ($fsock);
}
return $responce;
}
пример вызова:
$a = sql("http://rambler.ru");
А зачем кстати нужны эти неблокирующие сокеты? Какие премущества? Я всегда юзал тупо fsockopen, fwrite, while(!feof, fgets - работало. С неблокирующими лучше?
у меня такой ламерский вопрос.. нахрена оно вообще надо? :)
Что я могу сказать? Ты дурак. За 2 недели реально понять принцыпы Пер-ла,и писать на нем неплохие скрипты,не мучая людей и форум тупыми вопросами,про эту недоделаную конвертацию пхп в машинный код.Будь умнее,не трать время зря.Хочеш писать актуальный софт - пиши его на C++\C#\java, но никак не на php.Побереги свое время
Вот, как раз интересующая меня тема. Я быдлокодю на php (в основном, парсилки, спамилки и прочее). Думаю, не нужно говорить о недостатках его для таких целей ;) ;)
Много раз подумывал о изучении компилируемых языков, но не хватает времени и мотивации. Расскажи как пересесть с php на с++ или delphi (что лучше из этого для моих целей вышеописанных?) с минимальными "потерями"? Какую среду разработки выбрать? И насчет многопоточности, как она вообще выглядит? После 2 лет кодинга на php мне сложно мысленно представить как это выглядет - это автоматически делается в компиляторах или вручную?
Вот, как раз интересующая меня тема. Я быдлокодю на php (в основном, парсилки, спамилки и прочее). Думаю, не нужно говорить о недостатках его для таких целей ;) ;)
Много раз подумывал о изучении компилируемых языков, но не хватает времени и мотивации. Расскажи как пересесть с php на с++ или delphi (что лучше из этого для моих целей вышеописанных?) с минимальными "потерями"? Какую среду разработки выбрать? И насчет многопоточности, как она вообще выглядит? После 2 лет кодинга на php мне сложно мысленно представить как это выглядет - это автоматически делается в компиляторах или вручную?
пхп - язык СИ-подобный. Если вкратце - убирай доллар от имени переменной, в остальном почти то же самое))))
Вот, как раз интересующая меня тема. Я быдлокодю на php (в основном, парсилки, спамилки и прочее). Думаю, не нужно говорить о недостатках его для таких целей ;)
Каких недостатках =) Это очень интересно, помоему единственный недостаток это нет многопоточности, НО (!!!) есть мультикурл, который дает очень хороший прирост в скорости, а так же греет надежда, что в скором времени будет она, долгожданная многопоточность. В добавок - тише едешь, дальше будешь, это к тому что на личном опыте я заметил что при 5 сессиях на мультикурле парс страници идет превосходно и хороший прирост к скорости, при 20 сессиях уже начинаются пропуски.
Незнаю как в других ЯП с этим.
у меня такой ламерский вопрос.. нахрена оно вообще надо? :)
от декомпиля скриптов =))
Каких недостатках =) Это очень интересно, помоему единственный недостаток это нет многопоточности, НО (!!!) есть мультикурл, который дает очень хороший прирост в скорости, а так же греет надежда, что в скором времени будет она, долгожданная многопоточность. В добавок - тише едешь, дальше будешь, это к тому что на личном опыте я заметил что при 5 сессиях на мультикурле парс страници идет превосходно и хороший прирост к скорости, при 20 сессиях уже начинаются пропуски.
Незнаю как в других ЯП с этим.
ну многопоточность, даа..
В основном, я слышал, что сокеты в php как-то медленно работают и что из-за резолва хостов скорость работы заметно ниже, чем в компилируемых языках. Ну и что вообще php скрипты медленнее работают чем проги. Ну и самое главное - php скрипты обычно приходится запускать из браузера, а это несет в себе обрывы и закрытие соединений и прочие прелести.
Deathdreams
31.01.2010, 02:40
попугай, с асихронными сокетами геморроя меньше.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot