Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

14.11.2009, 16:25
|
|
Участник форума
Регистрация: 12.03.2008
Сообщений: 254
Провел на форуме: 12333903
Репутация:
238
|
|
Pashkela,плиз,можеш тогда мне сейчас сделать на неблокируемых сокетах аналог моей функции на php?
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","Кукисы");
Просто я с соксами не работал,всегда курлом обходился,как с ними работать хз,ну более чем такая функция мне и ненужно ничего.Спс
|
|
|

14.11.2009, 16:30
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
исправил предыдущий пост, изучай (там только куки вставить и пост-данные)
сокс это вовсе не сокеты. Не путай фундаметнальные понятия. SOCKETS !== SOCKS
PS: Curl - для лохов. Всегда зри в корень протокола. Познаешь сокеты - захаваешь весь интернет. Шутка, но с очень большой долей правды
Последний раз редактировалось Pashkela; 14.11.2009 в 16:33..
|
|
|

14.11.2009, 16:40
|
|
Участник форума
Регистрация: 12.03.2008
Сообщений: 254
Провел на форуме: 12333903
Репутация:
238
|
|
Пример на твоих соксах....
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);
он зависнет,или любую долгую операцию...
|
|
|

14.11.2009, 16:45
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
так и должно быть, ни в одном языке программирования при плохом конекте с сайтом скорости не жди. Многопоточный если даже будет скрипт - запустит 50 запросов и также будет висеть. А вот ТАЙМАУТ выставленный в функции позволит нажать кнопочку ровно через столько секунд, сколько таймаут.
PS: Еще раз - sleep - не выход. В любом языке программирования.
|
|
|

14.11.2009, 16:47
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме: 6462214
Репутация:
3171
|
|
Сообщение от Mixon
Пример на твоих соксах....
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);
он зависнет,или любую долгую операцию...
Ну извините меня,но зачем для таких простых целейю юзать php? Ведь тоже самое можно с средними знаниями написать на Сях,с многопоточностью(нормальн й!),или даже на дельфях.Но накой член,мучить компьютер бамкомпилами? Извращение,мне своего мнения не изменить 
Или уж на крайний случай юзайте Perl, там тоже есть консольное окошко,тоже перед однокласниками можно понтонуться крутым софтом 
|
|
|

14.11.2009, 16:51
|
|
Участник форума
Регистрация: 12.03.2008
Сообщений: 254
Провел на форуме: 12333903
Репутация:
238
|
|
тогда вставь место
$a = sql("http://www.model.poltava.ua");
цыкл долгий,например:
for ($i=$i; $i>-1; $bezk++){
echo $i;
}
в консоли будет видно что сам скрипт исполняеться нормально и без тормозов,выводит числа,а вот окно с интерфейсом всёравно зависает до исполнения пхп скрипта...Просто бамкомпиль я так понял росчитан на лёгкие скрипты,а если скрипт росчитан на постоянную роботу,тоисть всё время обрабатывать данные,то пока он их обрабатывает то и интерфейс зависший...выхода нету я так понял?
Сообщение от m0Hze
Ну извините меня,но зачем для таких простых целейю юзать php? Ведь тоже самое можно с средними знаниями написать на Сях,с многопоточностью(нормальн й!),или даже на дельфях.Но накой член,мучить компьютер бамкомпилами? Извращение,мне своего мнения не изменить 
Или уж на крайний случай юзайте Perl, там тоже есть консольное окошко,тоже перед однокласниками можно понтонуться крутым софтом 
жжошь  ,мы тут сейчас обговариваем зависание бамкомпиля,а ето самый елементарный пример показать его зависание,а как таково то у меня уже на нём написан спамер на 400 строк кода уже с полностью написаным интерфейсом  Вот только фигня в том что если етого зависания не избавиться то 3 дня под ряд что я просидел за написанием скрипта етого пойдут в попу,ото где обидно будет,что сидел по 1 пикселю выставлял етот интерфейс только сутки!
Последний раз редактировалось Mixon; 14.11.2009 в 16:56..
|
|
|

14.11.2009, 16:57
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
Если ты не осознал/впитал то, что было писано выше - то да, выхода нет. Или просто недостаточно опыта. CURL тут не поможет. GUI на PHP требует высшей квалификации.
|
|
|

14.11.2009, 17:02
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме: 6462214
Репутация:
3171
|
|
Сообщение от Mixon
жжошь  ,мы тут сейчас обговариваем зависание бамкомпиля,а ето самый елементарный пример показать его зависание,а как таково то у меня уже на нём написан спамер на 400 строк кода уже с полностью написаным интерфейсом  Вот только фигня в том что если етого зависания не избавиться то 3 дня под ряд что я просидел за написанием скрипта етого пойдут в попу,ото где обидно будет,что сидел по 1 пикселю выставлял етот интерфейс только сутки!
Что я могу сказать? Ты дурак. За 2 недели реально понять принцыпы Пер-ла,и писать на нем неплохие скрипты,не мучая людей и форум тупыми вопросами,про эту недоделаную конвертацию пхп в машинный код.Будь умнее,не трать время зря.Хочеш писать актуальный софт - пиши его на C++\C#\java, но никак не на php.Побереги свое время
|
|
|

14.11.2009, 17:06
|
|
Участник форума
Регистрация: 12.03.2008
Сообщений: 254
Провел на форуме: 12333903
Репутация:
238
|
|
не мучая людей и форум тупыми вопросами,если не ошибаюсь то ета тема именно об этой софтине...
а насчёт того что времени и нервов много потратил то ето реально так...не зря d_x мне говорил,не страдай фигней в виде етих бамкомпиль,нет же,не послушал...
Спс всем кароч,погнал просто на php переписывать 
|
|
|

22.01.2010, 01:01
|
|
Познавший АНТИЧАТ
Регистрация: 15.01.2008
Сообщений: 1,166
Провел на форуме: 2459557
Репутация:
606
|
|
Хорошая статья.
А формы рисовать для бамкомпилера нужно вручную ? Нет каких либо тулз, как IDE для С++, delphi и прочих ?
Сообщение от Pashkela
curl не пойдет для таких целей - кури неблокируемые сокеты, или задавай конкретные вопросы, что именно не получается с сокетами, тогда будет конкретный ответ (куски кода обязательны, а также подробное описание той задачи, которую надо выполнить, а не общие твои домыслы)
PS: sleep - не выход, выполнение sleep есс-но влияет на работу всего приложения, т.е. если юзать sleep - то, пока пауза, ничего нажать не получиться. Тем более 10 секунд.
Вот функция с неблокируемыми сокетами которая подойдет для парсинга любой URL (кроме https):
PHP код:
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;
}
пример вызова:
PHP код:
$a = sql("http://rambler.ru");
А зачем кстати нужны эти неблокирующие сокеты? Какие премущества? Я всегда юзал тупо fsockopen, fwrite, while(!feof, fgets - работало. С неблокирующими лучше?
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|