2014-01-27 2 views
0

У меня есть это:Сделать PHP дождаться загрузки JSON?

<?php 
$phpjson = (file_get_contents('icons_ajax.php?alls'), true); 
var_dump ($phpjson); 
?> 

возвращает:

Предупреждение: (? Icons_ajax.php Аллс) file_get_contents [function.file-получить содержание]: не удалось не удалось открыть поток: Нет такого файла или каталог в /home/flamenco/public_html/icons_cogo_20.php по строке 184 NULL

Я подозреваю, что это потому, что JSON еще не загружен.

Любой способ заставить PHP дождаться загрузки JSON?

Это тестовая страница с проблемой: http://flamencopeko.net/icons_cogo_20.php

+1

Можете ли вы попробовать использовать '$ phpjson = file_get_contents ('http://flamencopeko.net/icons_ajax.php?alls')'? Вы также можете просто скопировать код из этого файла и иметь '$ _GET ['alls']' not empty. –

+0

Дэйв Чен: Да. Пробовал только одно предложение. Не работает. Я не понимаю, что бы вы могли просто скопировать код из этого файла и не иметь пустых значений $ _GET ['alls']. означает. –

+1

Поскольку '/ icons_ajax.php' находится на одном сервере, почему бы не просто открыть этот файл и скопировать код, ответственный за json, в' icons_cogo_20.php'? –

ответ

2

Там нет такого понятия, как «JSON еще не загружен».
var_dump не будет называться до тех пор, пока file_get_contents не будет закончен.
Ваша ошибка в том, что она говорит: такого файла нет. Попробуйте предоставить полный путь.

И заменить

$phpjson = (file_get_contents(file_get_contents('icons_ajax.php?alls'), true)); 

с

$phpjson = file_get_contents('http://full.path.to/icons_ajax.php?alls'); 
+1

Прежде всего, вы можете использовать функцию [file_exists] (http://us2.php.net/manual/en/function.file-exists.php) содержимое. – Revent

+0

Просто попробовал с полным URL. Это дало NULL в качестве вывода, как показано здесь: http://flamencopeko.net/icons_cogo_21.php –

+1

Почему у вас есть файл_get_contents дважды в коде? – Dima

2

Первые вещи сначала: вложенности file_get_contents() почти никогда правильный путь для решения проблемы.

В английском языке, что ваш код делает это:

  • Прочитать содержимое локального файла
  • Рассматривать содержимое этого файла в качестве пути
  • Прочитайте содержимое указанного файла

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

Следующее, что нужно отметить, - это без полного URL-адреса (включая схему и домен) вы ссылаетесь на что-то в локальной файловой системе по отношению к текущему рабочему каталогу и - строго говоря - строки запроса, такие как ?alls, не работают в локальной файловой системе. В контексте, который вы, скорее всего, пытаетесь его использовать ($_GET), это конструкция протокола HTTP.

Если вы пытаетесь загрузить некоторые JSON от удаленного сервера, вы должны настроить свой код так:

$json = file_get_contents('http://remotedomain.com/path/to/file.json'); 
$object = json_decode($json); 
// do stuff with object 
+0

OP хочет получить удаленный URI с помощью одного вызова fgc. Я думаю, https://requestable.pieterhordijk.com/LVd7o – PeeHaa

+0

DaveRandom: Спасибо. Попробовал тоже. Но у меня нет файла * .json, у меня есть файл * .php. Мне нравится плоский файл, и мне не хотелось бы начинать изучать базу данных на данный момент, хотя это может показаться глупым. Все на одном сервере. Существует не более одного домена или что-то в этом роде. –

+0

PeeHaa: Интересный сайт. Я не понял этого полностью. Что такое вызов fgc? Не нашел никакой информации об этом через Google. –

0
$phpjson = (file_get_contents(file_get_contents('icons_ajax.php?alls'), true)); 

PHP не асинхронный, поэтому file_get_contents() будет блокировать до тех пор, пока не будет завершена , а затем вызывается var_dump(), поэтому вы, вероятно, просто не имеете файла по указанному вами пути.

+0

Файл есть. http://flamencopeko.net/icons_ajax.php –

Смежные вопросы