Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: file_get_contents срабатывает через раз
Форумы портала PHP.SU » » Вопросы новичков » file_get_contents срабатывает через раз

Страниц (2): [1] 2 »
 

1. Инсеин - 03 Августа, 2011 - 21:04:52 - перейти к сообщению
Доброе время суток !
Возникла такая вот проблема, что функция file_get_contents через раз (образно говоря) оказываеться пустая.
Теперь по порядку ... есть базовый шаблон (basic.php)
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <html>
  3. <head>
  4. <title><?=$title?></title>
  5. </head>
  6. <body>
  7. <?=$content?>
  8. </body>
  9. </html>
  10.  


Максимально упростил, так как проблема явно не в нём )
Есть так же файл с самим контентом (content.php) ... содержит только html так, что писать его думаю не имеет смысла. И есть так же третий файл который собирает всё это в кучу )

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $title = 'Hello, World !';
  4.  
  5. $content = file_get_contents ('http://mysite.ru/tpl/content.php');
  6.  
  7. include ('tpl/basic.php');
  8. ?>
  9.  


Так вот на локалхосте работает всё отлично и без проблем ... залил на хост тоже вроде всё работает нормально ... но сейчас уже второй день наблюдаю такую картину, что загружается только базовый шаблон, а $content получается остаётся пустым. При этом если обновить страницу ... ну или два - три раза обновить (когда как получаеться) то в итоге загружаеться страница как следует.
Ну и собственно сам вопрос ... какие могут быть причины такой вот рандомности в работе функции и возможные пути решения данной проблемы ?
2. Arni - 03 Августа, 2011 - 21:09:20 - перейти к сообщению
Плохо работает сервер который http://mysite[dot]ru
3. Инсеин - 03 Августа, 2011 - 21:22:59 - перейти к сообщению
Arni пишет:
Плохо работает сервер который http://mysite.ru


То есть проблема не в скрипте ? .. Хм ... всё на много хуже чем я думал ))
4. LIME - 03 Августа, 2011 - 21:28:55 - перейти к сообщению
если на локальной машине проблем не было значит точно не http://mysite[dot]ru виноват
попробуйте сами заходить на http://mysite[dot]ru/tpl/content.php через браузер
если и тут все хорошо то даже незнаю тогда
возможно в таймаут не укладываетесь
(Добавление)
вставьте вывод всех ошибок в начало скрипта возможно что-то выплывет
5. Arni - 03 Августа, 2011 - 21:48:32 - перейти к сообщению
Инсеин пишет:
Arni пишет:
Плохо работает сервер который http://mysite.ru


То есть проблема не в скрипте ? .. Хм ... всё на много хуже чем я думал ))


Потому что вы не то делаете. php будет дожидаться когда file_get_contents полностью отработает, а это будет не быстро, еще как минимум 4 секунды. Если то что она получает, без изменений должно попасть в блок вашего сайта то я бы вам советовал например с помощью jquery сделать это легко и просто.

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $.post('http://mysite.ru/tpl/content.php',function(data){
  3.         $('#my_id').html();
  4. });
  5.  


И если поищете, то тут еще и таймаут можно сделать, и сообщить что мол так и так не получен ответ от сервера. А то что делаете вы во всех отношениях не правильно. Еще учтите тот факт что сервера на отдачу быстрый канал получают, а вот на прием канал гораздо хуже как правило.
6. Инсеин - 03 Августа, 2011 - 21:51:12 - перейти к сообщению
Warning: file_get_contents(http://mysite.ru/tpl/content.php) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden

Пока не заглянул в хтмл кривой страницы не видел предупреждения )

Я так понимаю запрещён доступ к файлу !?! ... Но вот только теперь не ясно почему ... права на папку 755 и на файл 644 ... значит читать файл можно ... тем более, что временами всё-таки страница грузиться норм
(Добавление)
Arni пишет:
с помощью jquery сделать это легко и просто.


Ооо ... боюсь это будет ещё тяжелее )) ... ибо с jquery совсем не знаком ... пока что )
7. OrmaJever - 03 Августа, 2011 - 22:00:29 - перейти к сообщению
Проблема в скрипте, file_get_contents не рекомендуется использовать с виртуальными адресами,нужно использовать curl
8. White - 03 Августа, 2011 - 22:04:16 - перейти к сообщению
Инсеин и все таки предпочтительней в таком случае импользовать file_get_contents с локальным путем, например (если из корневой папки сайта) file_get_contents(tpl/content.php).
и еще если вам надо вставить html файл целиком, почему бы не использовать include_once?
9. Arni - 03 Августа, 2011 - 22:12:31 - перейти к сообщению
Инсеин пишет:
Ооо ... боюсь это будет ещё тяжелее )) ... ибо с jquery совсем не знаком ... пока что )


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


Кстати может у хостера резолвит внутри сети хреновато? поробуйте через localhost чтоли. Если это ваш хост.
10. White - 03 Августа, 2011 - 22:17:57 - перейти к сообщению
Arni jquery для таких дел +100 килограмм лишнего трафика
11. Arni - 03 Августа, 2011 - 22:19:19 - перейти к сообщению
White пишет:
+100 килограмм


89,4 КБ
12. OrmaJever - 03 Августа, 2011 - 23:01:33 - перейти к сообщению
Arni пишет:
89,4 КБ

а теперь ещё добавим время парсинга javascript'а браузером и добавление в память кучи ненужных переменых, методов и это ради того чтобы использовать только 1 простенькую функцию.
13. Arni - 03 Августа, 2011 - 23:13:46 - перейти к сообщению
OrmaJever пишет:
а теперь ещё добавим время парсинга javascript'а браузером и добавление в память кучи ненужных переменых, методов и это ради того чтобы использовать только 1 простенькую функцию.


Та будет вам, с таким подходом строить сайты образца прошлого века чтоли? Улыбка
14. White - 04 Августа, 2011 - 08:00:26 - перейти к сообщению
Arni JQuery - это фреймворк написанный на JS, любую из его функций возможно повторить на чистом JS, и если вы не используете хотя бы до 50% его функционала, то его использование вряд ли можно назвать оправданным.
15. Arni - 04 Августа, 2011 - 08:53:31 - перейти к сообщению
White пишет:
Arni JQuery - это фреймворк написанный на JS, любую из его функций возможно повторить на чистом JS, и если вы не используете хотя бы до 50% его функционала, то его использование вряд ли можно назвать оправданным.


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

 

Powered by ExBB FM 1.0 RC1