programmer
С нами с 08.12.02
Сообщения: 7615
Рейтинг: 5760
|
Добавлено: 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 , ошибки нет
такое впечатление, что дело в настройках сокетов
где могла собака порыться?
|
|
|
|
С нами с 01.10.03
Сообщения: 751
Рейтинг: 318
|
Добавлено: 13/05/06 в 16:06 |
а в чём ошибка?
сокет отработал своё, он соединился, потом закрылся
ты в свою очередь послал запрос на файл, файл есть - ответ 200 и результат работы скрипта
файла нет - ответ 400
никаких ошибок быть не должно если сервер живой
сокет он же _только_ соединение устанавливает
|
|
|
|
programmer
С нами с 08.12.02
Сообщения: 7615
Рейтинг: 5760
|
Добавлено: 13/05/06 в 16:09 |
ступил
но в случае отсутствия файла запрос GET возвращает false ?
Цитата: | Если вызов терпит неудачу, возвращается FALSE и........ |
и должно сработать условие
Код: | savelog("not connect with test.php"); |
|
|
|
|
С нами с 16.10.03
Сообщения: 688
Рейтинг: 392
|
Добавлено: 13/05/06 в 16:27 |
fputs вернет false только если не получилось отправить запрос серверу - т. е. сервер не существует или лежит.
а если файл не существует, то отправить запрос получится, а в последующих fread вернется строка с заголовком HTTP/1.1 404 Not Found (или 302 Found - если стоит редирект 404 трафика) - т. е. результат fread надо проверять на его наличие.
|
|
|
|
С нами с 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)
|
|
|
|
programmer
С нами с 08.12.02
Сообщения: 7615
Рейтинг: 5760
|
Добавлено: 13/05/06 в 16:31 |
понятно
где почитать про запросы типа GET ?
и как проконтролировать правильность работы вышеприведенного примера?
есть у меня сомнение, что GET не работает и это как то связано с настройками сервера
|
|
|
|
С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362
|
Добавлено: 13/05/06 в 20:30 |
1.Оформи правильно код , чтобы он стал читабельным.
2.Объясни что ты хочешь сделать или хотел бы сделать.
3.Почитай HTTP 1.0 , HTTP 1.1
4.Сокеты криво работать не могут ,в 99 % случаев проблема с руками...
|
|
|
|
С нами с 01.10.03
Сообщения: 751
Рейтинг: 318
|
Добавлено: 14/05/06 в 03:13 |
Sterx писал: | понятно
где почитать про запросы типа GET ?
и как проконтролировать правильность работы вышеприведенного примера?
есть у меня сомнение, что GET не работает и это как то связано с настройками сервера |
ты посылаешь GET(POST) - отдача идёт вебсервером
если бы GET(POST) работал криво то вебсервер был бы бесполезен
все Header`ы одинаковы, их стандарты определены
кури маны по спецификациям
HTTP и PHP
|
|
|
|
programmer
С нами с 08.12.02
Сообщения: 7615
Рейтинг: 5760
|
Добавлено: 14/05/06 в 03:38 |
xreload:
это скрипт сторонний. и он не работает на хосте. а на другом работает.
насчет читабельности согласен - видел такие перрлы там
и еще - в упор не могу понять - нафига вообще такое в коде, инклюды отменили чтоли? запрос файла с этого же хоста
|
|
|
|
programmer
С нами с 08.12.02
Сообщения: 7615
Рейтинг: 5760
|
Добавлено: 14/05/06 в 04:41 |
в общем если ручками запускаешь - работает
test.php?sess={$sess}
а через GET - болт.
fgets($s) выдает 404
файл существует, путь и хост правильные... мистика, блин
|
|
|
|