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

Форум PHP

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

 

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

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

тема: проблема с file_get_contents при работе с сокетами
 
 автор: romza   (19.10.2006 в 15:52)   письмо автору
 
 

По какой-то не понятной для меня причине, не срабатывает функция file_get_contents


// Устанавливаем соединение
$fs = fsockopen ($hostname, 80, $errno, $errstr, 60);

// Проверяем успешность соеднинения
if (!$fs) // Если соединения нет, выдаем сообщение и ошибку
{
    echo "!!! Соединение c ".$hostname." не установлено !!!<br>";
    echo "$errstr ($errno)<br>\n";
}
else // В случае успешного соеднинения:
{
    echo "Cоединение с ".$hostname." установлено.<br>";
    // формируем HTTP-запрос для передачи его серверу
    $headers = "GET $path HTTP/1.1\r\n"; // Первая часть заголовка с указанием пути к файлу
    $headers .= "Host: $hostname\r\n"; // Приращиваем вторую часть с указанием хоста к первой
    $headers .= "Connection: Close\r\n\r\n"; // Приращиваем третью часть
    
    // Отправляем HTTP-запрос серверу
    fwrite($fs, $headers);
    
    $takefile = file_get_contents($foolpath);
    if (!$takefile)
    {
        echo "!!! Не возможно прочитать файл ".$path." с ".$hostname." !!! <br/>";
    }
        
    // Закрываем соединение
    fclose($fs);
}


И выдает что "Не возможно прочитать файл ".$path." с ".$hostname." !!! "

Мож кто объяснит почему так... пару дней назад все работало, а теперь беда...
Или мож кто предложит альтернативу... мне нужно забирать файл в переменную.. но он достаточно большой по размеру, где то около 2MБ (кстати может по этому и не срабатывает file_get_contents ???)

   
 
 автор: kasmanaft   (19.10.2006 в 17:44)   письмо автору
 
   для: romza   (19.10.2006 в 15:52)
 

А зачем вы открываете сокет, посылаете запрос на принятие файла, а файл копируете самостоятельной ф-ей, никак не связанной с этим сокетом? И не понятно, откуда у вас берется $foolpath...

Можно попробовать вот так:

<?
$str 
'str';
while(
trim($str) != '')
{
      
$str fgets($fs);
}
$file fopen(basename($path), 'w');
while (!
feof($fs))
{
            
$str fgets($fs);
            
fputs($file$str);
}
fclose($file);

   
 
 автор: romza   (19.10.2006 в 17:54)   письмо автору
 
   для: kasmanaft   (19.10.2006 в 17:44)
 

$foolpath берется из кода выше, просто не привел его сдесь, так как там все ясно

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

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

И не понятно, почему не работает функция file_get_contents(), c чем это может быть связано, несколько дней назад она нормально работала...

   
 
 автор: kasmanaft   (19.10.2006 в 18:01)   письмо автору
 
   для: romza   (19.10.2006 в 17:54)
 

Да, обойтись можно без сокетов ... но 2 мегабайта "в переменную" наверное не выйдет на чужом хостинге ...
А вообще для чего вам файл в переменной?

   
 
 автор: romza   (19.10.2006 в 18:07)   письмо автору
 
   для: kasmanaft   (19.10.2006 в 18:01)
 

это xml который нужно переверстать автоматом

   
 
 автор: romza   (20.10.2006 в 10:14)   письмо автору
 
   для: romza   (19.10.2006 в 18:07)
 

Не получается ... подскажите другой способ плиз..

   
 
 автор: romza   (20.10.2006 в 12:44)   письмо автору
 
   для: romza   (20.10.2006 в 10:14)
 

А могу ли я как нить по частям забирать файл???

   
Rambler's Top100
вверх

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