Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сокеты, запись в файл .
 
 автор: Max78   (23.04.2010 в 08:18)   письмо автору
 
 

Не могу записать полученные с помошью сокетов данные от сервера.

<?php 
  $hostname 
"хост"
  
$path "путь"
  
$line ""
  
// Устанавливаем соединение, имя которого 
  // передано в параметре $hostname 
  
$fp fsockopen($hostname80$errno$errstr30); 
  
// Проверяем успешность установки соединения 
  
if (!$fp) echo "$errstr ($errno)<br />\n"
  else 
  { 
    
// Данные HTTP-запроса  
    
    // Заголовок HTTP-запроса     
    
$headers "POST $path HTTP/1.1\r\n"
    
$headers .= "Host: $hostname\r\n"
    
$headers .= "Content-type: application/x-www-form-urlencoded\r\n"
    
$headers .= "Content-Length: ".strlen($data)."\r\n\r\n"
    
// Отправляем HTTP-запрос серверу 
    
    // Получаем ответ 
    
while (!feof($fp)) 
    { 
      
$line .= fgets($fp1024); 
    } 
    
fclose($fp); 
  } 
  
   
file_put_contents("1.html",$line);
   
fputs("2.html",$line);
   
fwrite("3.html",$line);
?>


пробовал все три варианта.
file_put_contents("1.html",$line);
fputs("2.html",$line);
fwrite("3.html",$line);

  Ответить  
 
 автор: Valick   (23.04.2010 в 09:14)   письмо автору
 
   для: Max78   (23.04.2010 в 08:18)
 

fputs("2.html",$line);
fwrite("3.html",$line);

так нельзя, "спроси меня почему"
echo $line; перед file_put_contents("1.html",$line); что кажет?

  Ответить  
 
 автор: Max78   (23.04.2010 в 09:23)   письмо автору
 
   для: Valick   (23.04.2010 в 09:14)
 

изменил

echo $line;
  file_put_contents("1.html",$line);
  fputs("2.html",$line);
  fwrite ("3.html",$line);

но ничего не сохраняет

  Ответить  
 
 автор: Valick   (23.04.2010 в 09:30)   письмо автору
 
   для: Max78   (23.04.2010 в 09:23)
 

эх... день обещает быть трудным
первое и самое главное:
fputs("2.html",$line);
fwrite ("3.html",$line);
уберите нафиг из кода, позже я покажу как пользоваться этими функциями.
второе и не менее важное:
я Вас спросил что выводит в браузер echo $line; если оно ничего не выводит, значит переменная $line пуста, и с большой вероятностью можно утверждать что сервер Вам ничего не ответил.

  Ответить  
 
 автор: Max78   (23.04.2010 в 09:32)   письмо автору
 
   для: Valick   (23.04.2010 в 09:30)
 

Выводит заголовки , а следом выводит сам сайт. ,$line не пуст

  Ответить  
 
 автор: Valick   (23.04.2010 в 11:31)   письмо автору
 
   для: Max78   (23.04.2010 в 09:32)
 

судя по Вашему коду вы вообще заголовок не отправляете

  Ответить  
 
 автор: Max78   (23.04.2010 в 12:26)   письмо автору
 
   для: Valick   (23.04.2010 в 11:31)
 

В результате моего кода мне приходят заголовки

HTTP/1.1 200 OK Date: Fri, 23 Apr 2010 07:13:09 GMT Server: Apache/1.3.33 (Win32) PHP/4.3.10 X-Powered-By: PHP/4.3.10 Cache-Control: no-store, no-cache, must-revalidate Connection: close Transfer-Encoding: chunked Content-Type: text/html

а затем
выыодится сам сайт .

  Ответить  
 
 автор: Trianon   (23.04.2010 в 11:38)   письмо автору
 
   для: Max78   (23.04.2010 в 08:18)
 

Вам имеет смысл на минуточку забыть о file_put_contents и fsockopen.
И изучить сперва функции fopen, fgets, fputs, fclose применительно к обычным (текстовым) файлам.
После этого можно будет воспринимать fsockopen с куда меньшей головной болью.

  Ответить  
 
 автор: Max78   (23.04.2010 в 12:21)   письмо автору
 
   для: Trianon   (23.04.2010 в 11:38)
 

Вы знаете . если не использовать сокеты , то следуюший код работает.

$text = file_get_contents("http://www.softtime.ru");  
file_put_contents("1.html",$text);

на localhost'e следуюший простой код работает.
[code][
<?php
file_put_contents("2.html","oksana");
?>
/code]
То есть даже если и нету файла 2.html он создаёт и сохраняет в него значение "oksana"
а на сервере этот код не работает, то есть не сохраняет. Поэтому наверное и с сокетами не получалось.

  Ответить  
 
 автор: Valick   (23.04.2010 в 13:02)   письмо автору
 
   для: Max78   (23.04.2010 в 12:21)
 

Вы бы сразу намекнули чтоль, что тестируете скрипт на сервере

  Ответить  
 
 автор: Trianon   (23.04.2010 в 13:44)   письмо автору
 
   для: Max78   (23.04.2010 в 12:21)
 

>Вы знаете . если не использовать сокеты , то следуюший код работает.

Вы гадаете на кофейной гуще. Способствовать этому процессу желания нет никакого.

>То есть даже если и нету файла 2.html он создаёт и сохраняет в него значение "oksana"
>а на сервере этот код не работает, то есть не сохраняет.

Это потому что у файлов есть полный путь (а не просто название) и права доступа к каталогу.
И всё это имеет смысл знать раньше, чем лезть на чужой сервер за чужим контентом.

>Поэтому наверное и с сокетами не получалось.
А сокеты тут еще пока не при чем.

  Ответить  
 
 автор: Max78   (23.04.2010 в 18:02)   письмо автору
 
   для: Trianon   (23.04.2010 в 13:44)
 

Большое спасибо за подсказку. Код я оказывается написал правильно. Да вот у меня право на папку оказывается был не для записи. Не ловко как то. Чтоб другие время не теряли прочитав эту тему, удалите пожалуйста эту тему. Или могу ли я удалить её

  Ответить  
 
 автор: Valick   (23.04.2010 в 18:20)   письмо автору
 
   для: Max78   (23.04.2010 в 18:02)
 

тут темы не удаляют, придет время и её скинут в архив... для потомков :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования