|
|
|
| Реально ли через сокет прочесть только 1 символ а потом разорвать коннект? | |
|
|
|
|
|
|
|
для: emas
(18.11.2006 в 00:21)
| | Можно, конечно...А что хотите-то? Чувствую что-то нехорошее...;) | |
|
|
|
|
|
|
|
для: Unkind
(18.11.2006 в 00:23)
| | Ну мне надо узнать есть ли что-нить на странице если хоть что-нить то.... а если грузить всё то займёт больше времяни ... | |
|
|
|
|
|
|
|
для: emas
(18.11.2006 в 00:33)
| | эй | |
|
|
|
|
|
|
|
для: emas
(18.11.2006 в 12:41)
| | Одним сомволом тут не обойтись. Он всегда будет "H", при успешном соединении с сервером. Нужно просто прочитать только первую строку. Если там "HTTP/1.0 200 OK"/ значит страница существует, если же "HTTP/1.0 404 Not Found", то не существует. Версия протокола может быть как 1.0, так и 1.1 - учтите это. | |
|
|
|
|
|
|
|
для: Саня
(18.11.2006 в 13:24)
| | да но как ограничить ? | |
|
|
|
|
|
|
|
для: emas
(18.11.2006 в 23:22)
| | Что ограничить? А вообще, страница будет загружена вся. Так что никакие махинации с уменьшением трафика не пройдут. | |
|
|
|
|
|
|
|
для: Саня
(19.11.2006 в 00:26)
| | С фига ли? А второй параметр при считывании данных из сокета для чего вам дан?
$str_return=fgets($socket_handle, size(bytes)); | |
|
|
|
|
|
|
|
для: XPraptor
(19.11.2006 в 03:38)
| | >С фига ли? А второй параметр при считывании данных из сокета для чего вам дан?
>$str_return=fgets($socket_handle, size(bytes));
ой блин... я ваще ступил))) ладно спасибо за помощь ))) | |
|
|
|
|
|
|
|
для: XPraptor
(19.11.2006 в 03:38)
| | С фига ли? А второй параметр при считывании данных из сокета для чего вам дан?
$str_return=fgets($socket_handle, size(bytes));
Ну я могу и 10 сивлолов считать, а могу и while ( !feof($socket_handle) ) $str_return .= fgets($socket_handle, 128), тогда получу всю страницу. Вы путаете размеры считываемой информации из сокета с размером информации в самом сокете. Можно прочитать как один символ, так и всю страницу - всё равно в сокет изначально попадёт всё (это при GET-запросе). Таким образом, что $str_return=fgets($socket_handle, size(bytes)), что while ( !feof($socket_handle) ) $str_return .= fgets($socket_handle, 128) никак не повлияют на трафик между серверами. Единственный выход уменьшить трафик, как уже сказали, запрашивать не GET, а HEAD, тогда вернутся только заголовки. | |
|
|
|
|
|
|
|
для: emas
(18.11.2006 в 00:21)
| | Можно поступить следующим образом
<?php
// Устанавливаем содинение
$fp = fsockopen("www.softtime.ru", 80, $errno, $errstr, 30);
if (!$fp) exit("Нет соединения<br>");
// Посылаем запрос
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: www.softtime.ru\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
// Читаем один символ
echo fgets($fp, 1);
// Закрываем соединение
fclose($fp);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(19.11.2006 в 12:43)
| | Только запрашивать лучше HEAD а не GET | |
|
|
|
|
|
|
|
для: Trianon
(19.11.2006 в 14:31)
| | Это точно! :) Он заранее только заголовки вернет, и символы можно не ограничивать, а по заголовкам посмотреть что там за страница.
Кстаит, если вернулся заголовок 200OK, это еще не значит, что страница нормальная. Сейчас все больше modrewrite используют, либо в .htaccess вписывают свой адрес 404 страницы, а тогда заголовок вернется 200OK. Поэтому узнать по заголовку о странице скоро станет совсем невозможно. Придется все же качать некоторую часть страницы для проверки. | |
|
|
|
|
|
|
|
для: XPraptor
(19.11.2006 в 17:26)
| | либо в .htaccess вписывают свой адрес 404 страницы, а тогда заголовок вернется 200OK
Вы что имеете ввиду? ErrorDocument 404? Проверьте..."HTTP/1.0 404 Not Found"...
mod_rewrite'ом сделать тоже не выйдет, если заранее, конечно, не знать, какую именно несуществующую страницу он запрашивает...
http://softtime.ru/this%5Fpage%5Fdoesn%27t%5Fexists
cmd> GET /this%5Fpage%5Fdoesn%27t%5Fexists HTTP/1.0
cmd> User-Agent: Unkind
cmd> Host: softtime.ru
cmd>
hdr> HTTP/1.1 404 Not Found
hdr> Date: Sun, 19 Nov 2006 15:23:53 GMT
hdr> Server: Apache
hdr> X-Powered-By: PHP/5.1.4
hdr> Content-Length: 1246
hdr> Connection: close
hdr> Content-Type: text/html
RequestDone Error = 0
StatusCode = 404
|
| |
|
|
|
|
|
|
|
для: Unkind
(19.11.2006 в 18:21)
| | Я имею ввиду это:
ErrorDocument 404 http://www.site.ru/404.php
RewriteEngine On
RewriteBase /
RewriteRule ^404.php /index.php | |
|
|
|