Реклама на сайте Advertise with us

Сокеты криво работают?

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:

programmer

С нами с 08.12.02
Сообщения: 7607
Рейтинг: 5752

Ссылка на сообщениеДобавлено: 13/05/06 в 16:01       Ответить с цитатойцитата 

Код:
$s=fsockopen($conf['host'], $conf['port']);
if (fputs($s, "GET {$conf['path']}test.php?sess={$sess} HTTP/1.0\r\nHost: {$conf['host']}\r\nAccept: */*\r\n\r\n") === FALSE) savelog("not connect with test.php");
fclose($s);

киляешь test.php , ошибки нет
такое впечатление, что дело в настройках сокетов
где могла собака порыться?

крипта на ByBit

0
 



С нами с 01.10.03
Сообщения: 751
Рейтинг: 318

Ссылка на сообщениеДобавлено: 13/05/06 в 16:06       Ответить с цитатойцитата 

а в чём ошибка?
сокет отработал своё, он соединился, потом закрылся
ты в свою очередь послал запрос на файл, файл есть - ответ 200 и результат работы скрипта
файла нет - ответ 400
никаких ошибок быть не должно если сервер живой
сокет он же _только_ соединение устанавливает

Лучший Хостинг для CJ сайтов!

8
 

programmer

С нами с 08.12.02
Сообщения: 7607
Рейтинг: 5752

Ссылка на сообщениеДобавлено: 13/05/06 в 16:09       Ответить с цитатойцитата 

ступил
но в случае отсутствия файла запрос GET возвращает false ?
Цитата:
Если вызов терпит неудачу, возвращается FALSE и........

и должно сработать условие
Код:
savelog("not connect with test.php");

крипта на ByBit

0
 



С нами с 16.10.03
Сообщения: 686
Рейтинг: 392

Ссылка на сообщениеДобавлено: 13/05/06 в 16:27       Ответить с цитатойцитата 

fputs вернет false только если не получилось отправить запрос серверу - т. е. сервер не существует или лежит.
а если файл не существует, то отправить запрос получится, а в последующих fread вернется строка с заголовком HTTP/1.1 404 Not Found (или 302 Found - если стоит редирект 404 трафика) - т. е. результат fread надо проверять на его наличие.

Выигрышная стратегия игры в покер

8
 



С нами с 01.10.03
Сообщения: 751
Рейтинг: 318

Ссылка на сообщениеДобавлено: 13/05/06 в 16:30       Ответить с цитатойцитата 

ты неправильно понял
_сокет открывает только соединение_
если соединение не удаётся открыть - FALSE
соединение не удаётся открыть если на таком то хосте такой то порт закрыт или не отвечает по таймауту
если сервер ответил - соединение установилось
возращается дескриптор соединения
то есть - если $s=fsockopen($conf['host'], $conf['port']); отработало удачно, то fputs всегда отработает удачно
неудача будет только в том случае если не пройдёт соединение fsockopen
так как хост живой то оно всегда проходит


в случае мёртвого хоста
тебе нужно смотреть ответ от fsockopen, то есть

$s=fsockopen($conf['host'], $conf['port']);
if ($s == FALSE) savelog("can not connect to server");

если нужно смотреть наличие файла на сервер и обрабатывать то что отдаст сервер после твоего запроса то смотри например
fgets ($s, 1000000);
там будет отдача в виде
Get->HTTP/1.1 200 OK
или
Get->HTTP/1.1 404 Not Found (в твоём случае когда нет файла test.php)

Лучший Хостинг для CJ сайтов!

8
 

programmer

С нами с 08.12.02
Сообщения: 7607
Рейтинг: 5752

Ссылка на сообщениеДобавлено: 13/05/06 в 16:31       Ответить с цитатойцитата 

понятно
где почитать про запросы типа GET ?
и как проконтролировать правильность работы вышеприведенного примера?
есть у меня сомнение, что GET не работает и это как то связано с настройками сервера

крипта на ByBit

0
 



С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362

Ссылка на сообщениеДобавлено: 13/05/06 в 20:30       Ответить с цитатойцитата 



1.Оформи правильно код , чтобы он стал читабельным.
2.Объясни что ты хочешь сделать или хотел бы сделать.
3.Почитай HTTP 1.0 , HTTP 1.1
4.Сокеты криво работать не могут ,в 99 % случаев проблема с руками...

8
 



С нами с 01.10.03
Сообщения: 751
Рейтинг: 318

Ссылка на сообщениеДобавлено: 14/05/06 в 03:13       Ответить с цитатойцитата 

Sterx писал:
понятно
где почитать про запросы типа GET ?
и как проконтролировать правильность работы вышеприведенного примера?
есть у меня сомнение, что GET не работает и это как то связано с настройками сервера

ты посылаешь GET(POST) - отдача идёт вебсервером
если бы GET(POST) работал криво icon_smile.gif то вебсервер был бы бесполезен
все Header`ы одинаковы, их стандарты определены
кури маны по спецификациям
HTTP и PHP

Лучший Хостинг для CJ сайтов!

8
 

programmer

С нами с 08.12.02
Сообщения: 7607
Рейтинг: 5752

Ссылка на сообщениеДобавлено: 14/05/06 в 03:38       Ответить с цитатойцитата 

xreload:
это скрипт сторонний. и он не работает на хосте. а на другом работает.
насчет читабельности согласен - видел такие перрлы там
и еще - в упор не могу понять - нафига вообще такое в коде, инклюды отменили чтоли? запрос файла с этого же хоста

крипта на ByBit

0
 

programmer

С нами с 08.12.02
Сообщения: 7607
Рейтинг: 5752

Ссылка на сообщениеДобавлено: 14/05/06 в 04:41       Ответить с цитатойцитата 

в общем если ручками запускаешь - работает
test.php?sess={$sess}
а через GET - болт.
fgets($s) выдает 404
файл существует, путь и хост правильные... мистика, блин

крипта на ByBit

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »