исправил предыдущий пост, изучай (там только куки вставить и пост-данные) сокс это вовсе не сокеты. Не путай фундаметнальные понятия. SOCKETS !== SOCKS PS: Curl - для лохов. Всегда зри в корень протокола. Познаешь сокеты - захаваешь весь интернет. Шутка, но с очень большой долей правды
Пример на твоих соксах.... PHP: <? 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); он зависнет,или любую долгую операцию...
так и должно быть, ни в одном языке программирования при плохом конекте с сайтом скорости не жди. Многопоточный если даже будет скрипт - запустит 50 запросов и также будет висеть. А вот ТАЙМАУТ выставленный в функции позволит нажать кнопочку ровно через столько секунд, сколько таймаут. PS: Еще раз - sleep - не выход. В любом языке программирования.
тогда вставь место $a = sql("http://www.model.poltava.ua"); цыкл долгий,например: for ($i=$i; $i>-1; $bezk++){ echo $i; } в консоли будет видно что сам скрипт исполняеться нормально и без тормозов,выводит числа,а вот окно с интерфейсом всёравно зависает до исполнения пхп скрипта...Просто бамкомпиль я так понял росчитан на лёгкие скрипты,а если скрипт росчитан на постоянную роботу,тоисть всё время обрабатывать данные,то пока он их обрабатывает то и интерфейс зависший...выхода нету я так понял? жжошь,мы тут сейчас обговариваем зависание бамкомпиля,а ето самый елементарный пример показать его зависание,а как таково то у меня уже на нём написан спамер на 400 строк кода уже с полностью написаным интерфейсом Вот только фигня в том что если етого зависания не избавиться то 3 дня под ряд что я просидел за написанием скрипта етого пойдут в попу,ото где обидно будет,что сидел по 1 пикселю выставлял етот интерфейс только сутки!
Если ты не осознал/впитал то, что было писано выше - то да, выхода нет. Или просто недостаточно опыта. CURL тут не поможет. GUI на PHP требует высшей квалификации.
не мучая людей и форум тупыми вопросами,если не ошибаюсь то ета тема именно об этой софтине... а насчёт того что времени и нервов много потратил то ето реально так...не зря d_x мне говорил,не страдай фигней в виде етих бамкомпиль,нет же,не послушал... Спс всем кароч,погнал просто на php переписывать
Хорошая статья. А формы рисовать для бамкомпилера нужно вручную ? Нет каких либо тулз, как IDE для С++, delphi и прочих ? А зачем кстати нужны эти неблокирующие сокеты? Какие премущества? Я всегда юзал тупо fsockopen, fwrite, while(!feof, fgets - работало. С неблокирующими лучше?
Вот, как раз интересующая меня тема. Я быдлокодю на php (в основном, парсилки, спамилки и прочее). Думаю, не нужно говорить о недостатках его для таких целей Много раз подумывал о изучении компилируемых языков, но не хватает времени и мотивации. Расскажи как пересесть с php на с++ или delphi (что лучше из этого для моих целей вышеописанных?) с минимальными "потерями"? Какую среду разработки выбрать? И насчет многопоточности, как она вообще выглядит? После 2 лет кодинга на php мне сложно мысленно представить как это выглядет - это автоматически делается в компиляторах или вручную?
пхп - язык СИ-подобный. Если вкратце - убирай доллар от имени переменной, в остальном почти то же самое))))
Каких недостатках =) Это очень интересно, помоему единственный недостаток это нет многопоточности, НО (!!!) есть мультикурл, который дает очень хороший прирост в скорости, а так же греет надежда, что в скором времени будет она, долгожданная многопоточность. В добавок - тише едешь, дальше будешь, это к тому что на личном опыте я заметил что при 5 сессиях на мультикурле парс страници идет превосходно и хороший прирост к скорости, при 20 сессиях уже начинаются пропуски. Незнаю как в других ЯП с этим.
ну многопоточность, даа.. В основном, я слышал, что сокеты в php как-то медленно работают и что из-за резолва хостов скорость работы заметно ниже, чем в компилируемых языках. Ну и что вообще php скрипты медленнее работают чем проги. Ну и самое главное - php скрипты обычно приходится запускать из браузера, а это несет в себе обрывы и закрытие соединений и прочие прелести.