Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы при открытии файла, Использование fopen, fread 
:(
    Опции темы
dimcat
Дата 6.3.2008, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 15.5.2007

Репутация: нет
Всего: нет



Следующая бодяга

Открываю файл для чтения

Код

$file = fopen("путь","r");
$buf=fread($file, 50000000);
fclose($file);


Иногда считывает нормально, но иногда на половине обрывает... Пример: http://hotelsandtours.ru/events/inc.php - пообновляйте несколько раз для получения представления...

Не подскажете, с чем сие может быть связано?
PM MAIL   Вверх
A1ekcandr
Дата 6.3.2008, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 99
Регистрация: 27.6.2007

Репутация: 1
Всего: 1



не понял проблемы там должно по 2 показываться домика?
PM MAIL   Вверх
dimcat
Дата 6.3.2008, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 15.5.2007

Репутация: нет
Всего: нет



Да два. Причём размер файла небольшой, но периодически обрывается на полпути...
PM MAIL   Вверх
A1ekcandr
Дата 6.3.2008, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 99
Регистрация: 27.6.2007

Репутация: 1
Всего: 1



мало информации нужен более полный кусок скрипта
PM MAIL   Вверх
dimcat
Дата 6.3.2008, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 15.5.2007

Репутация: нет
Всего: нет



Да полнее не придумаешь... Вот дословно:

Код

$file = fopen("http://hotelsandtours.ru/events/hopy2.php","r");
$buf=fread($file, 3000000);
fclose($file);
echo $buf;


Другого кода нет. Сам файл hopy2.php работает нормально... Ну собственно, можете и сами убедиться... Ощущение такое, что всё-таки обрубается всё на каком-то по счёту символе...
PM MAIL   Вверх
A1ekcandr
Дата 6.3.2008, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 99
Регистрация: 27.6.2007

Репутация: 1
Всего: 1



обрубается всегда в одном месте после <tr>

а вообще это изврат, почему сразу не написать ?
Код

include(/events/hopy2.php) или require_once(/events/hopy2.php);

ну пути только сами правильно прописать

Добавлено @ 14:37
не рекомендуется открывать и считывать удаленный файл через fopen(http:// и т.д.) и fread() думаю что какраз по таким причинам для удаленного доступа к файлам лучше использовать socket-ы но в вашем случае лучше будет то что я написал выше

Это сообщение отредактировал(а) A1ekcandr - 6.3.2008, 14:38
PM MAIL   Вверх
awers
Дата 6.3.2008, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



а file_get_content? 
PM MAIL WWW ICQ Skype   Вверх
Feldmarschall
Дата 6.3.2008, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



dimcat, следует отличать файлы от НТТР-ресурсов.
И не обращаться к файлам, как к НТТР-реесурсам.
PM   Вверх
dimcat
Дата 7.3.2008, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 15.5.2007

Репутация: нет
Всего: нет



Цитата

а вообще это изврат, почему сразу не написать ?
include(/events/hopy2.php) или require_once(/events/hopy2.php);


Цитата

dimcat, следует отличать файлы от НТТР-ресурсов.
И не обращаться к файлам, как к НТТР-реесурсам.


Потому что это должно быть доступно с любого другого сайта... Как тогда стоит обращаться, знаете?

Код
file_get_content


Что это за функция и как работает? Ни одного толкового описания не нашёл.

Это сообщение отредактировал(а) dimcat - 7.3.2008, 11:39
PM MAIL   Вверх
Feldmarschall
Дата 7.3.2008, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



набираешь в браузере php.net/ и дальше пишешь имя функции. любой функции PHP.
и сразу тебе толковое описание.

вот только врядли она поможет.
PM   Вверх
dimcat
Дата 7.3.2008, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 15.5.2007

Репутация: нет
Всего: нет



Цитата

вот только врядли она поможет.


Ну да, не понял её преимущества перед file в моём случае.

Ещё такая фишка. Если я оставляю только один блок для вывода, то всё проходит нормально... Вот ё.
PM MAIL   Вверх
Feldmarschall
Дата 7.3.2008, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



что такое блок для вывода? Ещё одна html таблица?

Добавлено через 58 секунд
Вообще знаешь, что.
собирай-ка ты отладочную информацию. 
пусть после исполнения каждой строчки программа пишет строчку в лог.
и сообщения об ошибках пхп туда же.
а то ты долго можешь здесь гадать, почему "обрывается".
PM   Вверх
A1ekcandr
Дата 7.3.2008, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 99
Регистрация: 27.6.2007

Репутация: 1
Всего: 1




Цитата

Потому что это должно быть доступно с любого другого сайта... Как тогда стоит обращаться, знаете?


знаете, знаете. Я уже писал об этом
Цитата

 для удаленного доступа к файлам лучше использовать socket-ы

PM MAIL   Вверх
Feldmarschall
Дата 7.3.2008, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



A1ekcandr, он раздает эти картинки перепродавцам. там не то что сокеты - там и url_fopen_wrapper будет у половины закрыт.
PM   Вверх
A1ekcandr
Дата 7.3.2008, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 99
Регистрация: 27.6.2007

Репутация: 1
Всего: 1



Цитата

он раздает эти картинки перепродавцам. там не то что сокеты - там и url_fopen_wrapper будет у половины закрыт. 

о как, тогда да, единственный вариант мне известный через fopen думаю что проблема всетаки в его скрипте и человек явно не заинтересован чтоб ему помогали, я считаю нужно закрыть тему
PM MAIL   Вверх
dimcat
Дата 7.3.2008, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 15.5.2007

Репутация: нет
Всего: нет



Цитата

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


Это вы каким образом пришли к столь однозначному умозаключению?))))

Цитата

думаю что проблема всетаки в его скрипте 


Ну какая проблема может быть в скрипте? Попробуйте отдельно взять подключаемый файл - он же работает без проблем...

http://hotelsandtours.ru/events/hopy2.php

Сюда поключаем: http://hotelsandtours.ru/events/inc.php - дословный код:
Код

<?
$file = fopen("http://hotelsandtours.ru/events/hopy2.php","r");
$buf=fread($file, 3000000);
fclose($file);
echo $buf;
?>


Главный вопрос: Если файл сам по себе работает, то почему он не работает при чтении?
PM MAIL   Вверх
Feldmarschall
Дата 7.3.2008, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



dimcat, твоя логика здесь не работает. Откровенно говоря, её здесь вообще нет.
Из того, что отдельно подключаемый работает, не следует, что проблема не в нем.

У тебя, собственно, выбор-то небольшой.
Или согласиться, что проблема в скрипте, и заняться его отладкой.
Или продолжать спорить на форуме. 
Но последнее не сильно тебе поможет в решении проблемы.

PM   Вверх
MoLeX
Дата 7.3.2008, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



dimcat потести вариант 


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
awers
Дата 7.3.2008, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



если нужно получить просто данные можно и curl использовать... 
PM MAIL WWW ICQ Skype   Вверх
MoLeX
Дата 7.3.2008, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



вылаживаю скрипт, не знаю возможно даже и не пригодится... так на всякий случай...
Код

<?php
class StealText
{
    public function UrlGetContents($url, $timeout = 5)
    {
        $url_parsed = parse_url($url);
        $host = $url_parsed["host"];
    
        if ($url == "" || $host == "") 
        {
            return false;
        }
    
        $hostName = gethostbyname($host);
        $ip = ip2long($hostName);
           
        if ($ip === -1 || $ip === false) 
        {
            return false;
        }
            
        $port = ($url_parsed["port"] == 0 ? 80 : $url_parsed["port"]);
        $path = (empty($url_parsed["path"]) ? "/" : $url_parsed["path"]);
        $path.= (!empty($url_parsed["query"]) ? "?".$url_parsed["query"] : "");
        $out = "GET ".$path." HTTP/1.0\r\nHost: ".$host."\r\nConnection: Close\r\n\r\n";
        $fp = fsockopen($host, $port, $errno, $errstr, intval($timeout));
            
        if (!$fp) 
        {
            return false;
        }
               
        stream_set_timeout($fp, intval($timeout));
        fwrite($fp, $out);
    
        $headers = "";
        $content = "";
        $buf = "";
        $isBody = false;
            
        while (!feof($fp)) 
        {
            $buf = fgets($fp, 1024);
            
            if ($isBody) 
            {
                $content .= $buf;
            } 
            else    
            {
                $headers .= $buf;
            }
                    
            if ($buf == "\r\n") 
            {
                $isBody = true;
            }
        }
               
        preg_match("#HTTP/1.[0-9]{1}\s+([0-9]{3}).*#is", $headers, $match);
        fclose($fp);
        if($match[1] != 200) 
        {
            return false;
        }
               
        return array("headers" => $headers, "body" => $content);
    }
    
    public function ErrorUrl()
    {
        echo "Хм, урл какой то кривой однако.";
    }
    
    public function PrintContents($msg, $Value)
    {
        if($Value == "true")
        {
            echo $msg.str_repeat("<br>", 3)."\n";
        }
    }
    
    public function PrintHeaders($msg, $Value)
    {
        if($Value == "true")
        {
            echo $msg;
        }
    }        
}



$go = new StealText();

if (($HTML = $go->UrlGetContents("http://hotelsandtours.ru/events/hopy2.php")) === false) 
{
    $go->ErrorUrl();

else 
{
    $go->PrintHeaders($HTML["headers"], true);
    $go->PrintContents($HTML["body"], true);
}
?>


если не работает, значит у твоего хостера запрещены сокеты


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
dimcat
Дата 7.3.2008, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 15.5.2007

Репутация: нет
Всего: нет



MoLeX, спасибо огромное... Пусть не универсальное решение, но хотя бы могу предложить тем у кого сокеты не отключены. Кстати, эту настройку делает только сам хостер или есть пользовательские возможности?
PM MAIL   Вверх
mishaSL
Дата 7.3.2008, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



Цитата(dimcat @  7.3.2008,  17:12 Найти цитируемый пост)
Кстати, эту настройку делает только сам хостер или есть пользовательские возможности? 

Если у вас нет доступа в php.ini то только хостер.

Вот вариант для cUrl


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
MoLeX
Дата 10.3.2008, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(dimcat @  7.3.2008,  17:12 Найти цитируемый пост)
но хотя бы могу предложить тем у кого сокеты не отключены.

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


Цитата(dimcat @  7.3.2008,  17:12 Найти цитируемый пост)
Пусть не универсальное решение

хм, а что в твоем виде - универсальное должно быть? 


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1502 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.