[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: file_get_contents срабатывает через раз
Ins
Доброе время суток !
Возникла такая вот проблема, что функция file_get_contents через раз (образно говоря) оказываеться пустая.
Теперь по порядку ... есть базовый шаблон (basic.php)

<html>
<head>
<title><?=
$title?></title>
</head>
<body>
<?=
$content?>
</body>
</html>


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

<?php
$title = 'Hello, World !';

$content = file_get_contents ('http://mysite.ru/tpl/content.php');

include ('tpl/basic.php');
?>


Так вот на локалхосте работает всё отлично и без проблем ... залил на хост тоже вроде всё работает нормально ... но сейчас уже второй день наблюдаю такую картину, что загружается только базовый шаблон, а $content получается остаётся пустым. При этом если обновить страницу ... ну или два - три раза обновить (когда как получаеться) то в итоге загружаеться страница как следует.
Ну и собственно сам вопрос ... какие могут быть причины такой вот рандомности в работе функции и возможные пути решения данной проблемы ?[php]



Спустя 2 минуты, 22 секунды (3.08.2011 - 20:14) jetistyum написал(а):
1. может быть какие-то проблемы с получением контента, может быть какие-то пролбемы с генерацией контента тем скриптом твоим. ... вообще логика капец ужасная.

Спустя 1 час, 6 минут, 13 секунд (3.08.2011 - 21:20) killer8080 написал(а):
какое то извращение :)
$content = file_get_contents ('http://mysite.ru/tpl/content.php');

Спустя 17 минут, 37 секунд (3.08.2011 - 21:38) Guest написал(а):
killer8080

Ну, почему же извращение то !?! ))
Мне нужно было поместить в переменную содержимое файла ... первое же решение которое я нашёл это именно file_get_contents ... проверил ... работает нормально ... поправка: работало нормально ) ... Нет ну можно было бы все шаблоны хранить в БД или сделать что-нибудь страшное на инклудах ) ... но как по мне то именно это было бы извращением )) ... а file_get_contents казалось простым и удобным решением )

Спустя 16 минут, 20 секунд (3.08.2011 - 21:54) Лена написал(а):
Почему не сделать просто:


$title = 'Hello, World !';
include_once('http://mysite.ru/tpl/content.php');
include ('tpl/basic.php');


а внутри файла content.php собрать в переменную $content все, что вам нужно.

file_get_contents() имеет третий аргумент - контекст, его можно попробовать задать, хотя это все равно криво.




Спустя 6 минут, 49 секунд (3.08.2011 - 22:01) Guest написал(а):
Лена

Если сделать так, то с начала на странице появиться контент, а потом уже шапка меню и всё остальное )

Спустя 31 минута, 3 секунды (3.08.2011 - 22:32) killer8080 написал(а):
Цитата (Guest @ 3.08.2011 - 21:38)
Ну, почему же извращение то !?! ))

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

Спустя 8 часов, 57 минут, 5 секунд (4.08.2011 - 07:29) linker написал(а):
<?php

$title = 'Hello, World !';
ob_start();
include('tpl/content.php');
$content = ob_get_contents();
ob_end_clean();
include ('tpl/basic.php');

?>

Спустя 2 часа, 44 минуты, 15 секунд (4.08.2011 - 10:13) Ins написал(а):
linker

Огромное спасибо !

Хотя я уже думал сделать так


<html>
<
body>
<?php
include ("$content");
?>
</body>
</
html>


Ну, а вдругом файле уже


<?php
$content = 'tpl/content.php';
include ('basic.php');
?>


Но боюсь, что это тоже назавут извращением ))

Спустя 26 минут (4.08.2011 - 10:39) killer8080 написал(а):
Цитата (Ins @ 4.08.2011 - 10:13)
include ("$content");

переменную в кавычки брать не нужно
Цитата (Ins @ 4.08.2011 - 10:13)
Но боюсь, что это тоже назавут извращением ))

а вы не согласны с моим первым замечанием?

Спустя 19 минут, 51 секунда (4.08.2011 - 10:59) Guest написал(а):
killer8080
Я не то, чтобы не согласен, но я ж объяснял, что на момент написания сайта у меня было только три варианта решения ... я и выбрал самый простой )

Спустя 46 минут, 37 секунд (4.08.2011 - 11:46) killer8080 написал(а):
Ins
вижу вы меня не поняли, нельзя делать так
$content = file_get_contents ('http://mysite.ru/tpl/content.php');
нужно было так
$content = file_get_contents ($_SERVER['DOCUMENT_ROOT'] . '/tpl/content.php');

в вашем варианте вместо прямого открытия файла, происходит открытие нового tcp соединения сервера с самим собой, то есть запускается ещё один процесс php интерпретатора, занимает лишнюю память и процессорное время.

Спустя 28 минут, 25 секунд (4.08.2011 - 12:14) linker написал(а):
Так нельзя
file_get_contents ($_SERVER['DOCUMENT_ROOT'] . '/tpl/content.php');
ибо скорее всего внутри content.php существуют php-вставки, которые должны быть исполнены, поэтому топикстартером и был выбран способ
$content = file_get_contents ('http://mysite.ru/tpl/content.php');

Спустя 6 минут, 10 секунд (4.08.2011 - 12:20) neadekvat написал(а):
killer8080, надо было посоветовать использовать include.

Спустя 30 минут, 23 секунды (4.08.2011 - 12:51) killer8080 написал(а):
Цитата (neadekvat @ 4.08.2011 - 12:20)
надо было посоветовать использовать include.

согласен
Цитата (linker @ 4.08.2011 - 12:14)
ибо скорее всего внутри content.php существуют php-вставки, которые должны быть исполнены, поэтому топикстартером и был выбран способ

а толку от них если content.php отработает в отдельном процессе smile.gif тут только include (или require) подойдёт

Спустя 1 час, 25 минут, 32 секунды (4.08.2011 - 14:16) Ins написал(а):
Цитата
ибо скорее всего внутри content.php существуют php-вставки


Так и есть в большинстве случаев ... зависит от того какой контент подключается

Цитата
толку от них если content.php отработает в отдельном процессе


Или я не так понял ... или же если речь идёт о том, что php-вставки находящиеся в content.php не отработают ... то хотел бы заметить, что они работаю нормально и без проблем )

Спустя 28 минут, 49 секунд (4.08.2011 - 14:45) killer8080 написал(а):
Цитата (Ins @ 4.08.2011 - 14:16)
Так и есть в большинстве случаев ... зависит от того какой контент подключается

значит нужно инклюдить этот файл smile.gif
Цитата (Ins @ 4.08.2011 - 14:16)
Или я не так понял ... или же если речь идёт о том, что php-вставки находящиеся в content.php не отработают

я имел ввиду что переменные из index.php не будут доступны внутри content.php.
Цитата (Ins @ 4.08.2011 - 14:16)
то хотел бы заметить, что они работаю нормально и без проблем )

Без проблем?! Можно Атлантику пересечь на самолёте, а можно переплыть на байдарке (если повезёт smile.gif ). Результат один, вопрос лишь в рациональности решения wink.gif
К тому же судя потому, что этот топик возник, работает далеко не без проблем.
Советую посетить irbis-team, найдёте много познавательного smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.