|
|
|
| Я использую переделанный под себя вот этот скрипт
<?
// передаваемые данные
$name = "Login";
$pass = "Password";
$hostname = "chat.my";
$fp = fsockopen($hostname,80);
// формируем строку с отправляемымы данными
$data = "name=".urlencode($name)."&pass=".urlencode($pass)."\r\n\r\n";
$headers = "POST /w/handler.php HTTP/1.1\r\n"
."Host: $hostname\r\n"
."Content-type: application/x-www-form-urlencoded\r\n"
."Content-Length: ".strlen($data)."\r\n\r\n";
// отправляем
fwrite($fp,$headers.$data);
// на этом впринципе отправка закончена,
// для уверенности можно прочитать один
// байт или все содержимое:
while(!feof($fp))
echo fread($fp,1024);
fclose($fp);
?>
|
http://www.softtime.ru/forum/read.php?id_forum=7&id_theme=15857
Мне не понятно, почему происходит все очень медленно (около 10 секунд) хотя я использую локальное обращение к данным. Чем вызвана такая задержка? | |
|
|
|
|
|
|
|
для: Ziq
(29.10.2006 в 22:22)
| | Вероятно, потому, что ВЫ оставляете открытым соединение, а потом приходится ждать, когда оно закроется по тайм-ауту. | |
|
|
|
|
|
|
|
для: Trianon
(30.10.2006 в 09:44)
| | Нельзя ли по-подробнее? Как закрыть соединение? | |
|
|
|
|
|
|
|
для: Ziq
(30.10.2006 в 17:42)
| |
<?
// передаваемые данные
$name = "Login";
$pass = "Password";
$hostname = "chat.my";
$fp = fsockopen($hostname,80);
// формируем строку с отправляемымы данными
$data = "name=".urlencode($name)."&pass=".urlencode($pass)."\r\n\r\n";
$headers = "POST /w/handler.php HTTP/1.0\r\n"
."Host: $hostname\r\n"
."Content-type: application/x-www-form-urlencoded\r\n"
."Content-Length: ".strlen($data)."\r\n"
."\r\n";
// отправляем
fwrite($fp,$headers.$data);
// на этом впринципе отправка закончена,
// для уверенности можно прочитать один
// байт или все содержимое:
while(!feof($fp))
echo fread($fp,1024);
fclose($fp);
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(30.10.2006 в 18:32)
| | я так понял изменилась вот эти строки
."Content-Length: ".strlen($data)."\r\n"
."\r\n";
|
Ничего не поменялось :(.
Что делать вообще не знаю... помогите, пожалуйста. | |
|
|
|
|
|
|
|
для: Ziq
(30.10.2006 в 18:54)
| | Возможно имелось ввиду
."Content-Length: ".strlen($data)."\r\n"
."Connection: Close"."\r\n\r\n";
|
| |
|
|
|
|
|
|
|
для: kasmanaft
(30.10.2006 в 18:58)
| | Этот вариант тоже заработал!!! А какой лучше? | |
|
|
|
|
|
|
|
для: kasmanaft
(30.10.2006 в 18:58)
| | Да нет... имелось в виду именно то, что было написано. :) | |
|
|
|
|
|
|
|
для: Ziq
(30.10.2006 в 18:54)
| | Нет. Это не главное.
Изменилась строка
$headers = "POST /w/handler.php HTTP/1.0\r\n"
|
| |
|
|
|
|
|
|
|
для: Trianon
(30.10.2006 в 18:58)
| | Как то ни странно (для меня), но заработало!!! Мне только не понятно, почему надо использовать версию 1.0, а не 1.1? Объясните, пожалуйста. | |
|
|
|
|
|
|
|
для: Ziq
(30.10.2006 в 19:03)
| | потому что протокол 1.0 закрывает соединение сразу. А 1.1 (по умолчанию) ждет еще одного запроса. | |
|
|
|
|
|
|
|
для: Trianon
(30.10.2006 в 19:08)
| | Ну я так понимаю правильней использовать более современный протокол 1.1. Или есть какие-то проблемы связанные с его реализацией? | |
|
|
|
|
|
|
|
для: Ziq
(30.10.2006 в 19:10)
| | при чем тут современный и несовременный?
Один предоставляет меньше опций - другой больше.
Правильно использовать тот, который реализует Ваши нужды. Раз нужды реализуют оба - значит можно применять младший. Сервер 1.1 всяко обработает запрос 1.0 Сервер 1.0 запрос 1.1 может и не суметь обработать.
В данном случае, в дело вступает еще один фактор. Протокол 1.0 Вы знаете, а протокол 1.1 - нет. Значит нужно применять 1.0, т.к. в 1.1 можно и дров наломать по незнанию. Что собственнно и произошло.
Имеетесь в виду не Вы конкретно, конечно, а автор того скрипта, который Вы взяли за основу. | |
|
|
|
|
|
|
|
для: Trianon
(30.10.2006 в 19:17)
| | Наверно Вы правы... честно говоря это 2 опыт написания подобного скрипта.
Спасибо за ответ. | |
|
|
|
|
|
|
|
для: Trianon
(30.10.2006 в 18:32)
| | Причем, отправка сообщение осуществляется значительно быстрее, чем получение... | |
|
|
|