2013-05-02 2 views
3

У меня есть следующие файлы:
utils.php где arrayForJSON определяется
getLikes.php:var_dump, кажется, не вызвать зацикливание/испытание до таймаута

include '../utils.php'; 
    if($user_id) { 
      try { 
      if(is_null($likes)) 
      $likes = idx($facebook->api('/me/likes'), 'data', array()); 
      if ($likes) { 
       $arrayForJSON['likes']=$likes; 
      } 
     } 
     catch(FacebookApiException $e){ 
      echo error_log($e); 
     } 
     var_dump($arrayForJSON); 
    } 
    else 
     echo "User not logged in"; 

что приводит показывает содержимое от $arrayForJSON.
теперь у меня есть еще один файл со следующим содержанием: learning_globals.php

<?php 
include 'utils.php'; 
var_dump($GLOBALS['arrayForJSON']); 
?> 

Теперь, если я запускаю этот файл, ПОСЛЕ работает getLikes, он работает до тайм-аута. Если я запустил его ПЕРЕД, он возвращает null. Тот же результат, если я запускаю файлы в обратном порядке.

Что мне делать ..? Я изучаю php в настоящее время, и я немного застрял.


Edit: не dupicate -
Предложенный ответ не подходит, а не хороший ответ, что вопрос- проблема, кажется, не имеют ничего общего с API facebook в. С другой стороны, разница в том, что даже если я позвоню сначала learning_globals.php, он показывает null и вызывает getLikes.php результаты снова в попытке до перерыва.

теперь я надеюсь, что все ясно


utils.php

require_once('sdk/src/facebook.php'); 
require_once("AppInfo.php"); 
/** 
* @return the value at $index in $array or $default if $index is not set. 
*/ 
function idx(array $array, $key, $default = null) { 
    return array_key_exists($key, $array) ? $array[$key] : $default; 
} 
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past 
function he($str) { 
    return htmlentities($str, ENT_QUOTES, "UTF-8"); 
} 
$facebook = new Facebook(array(
'appId' => AppInfo::appID(), 
'secret' => AppInfo::appSecret(), 
'sharedSession' => true, 
'trustForwarded' => true, 
'file_upload' =>true 
)); 
$user_id = $facebook->getUser(); 
$app_info = $facebook->api('/'. AppInfo::appID()); 
$app_name = idx($app_info, 'name', ''); 
if($user_id) 
{ 
    $logoutUrl =$facebook->getLogoutUrl(); 
} 
    else 
    { 
     $loginUrl=$facebook->getLoginUrl(); 
    } 
if ($user_id) { 
try { 
    $permissions = $facebook->api('/me/permissions'); 
    $user_profile = $facebook->api('/me'); 
} catch (FacebookApiException $e) { 
    // If the call fails we check if we still have a user. The user will be 
    // cleared if the error is because of an invalid accesstoken 
    if (!$facebook->getUser()) { 
    header('Location: '. AppInfo::getUrl($_SERVER['REQUEST_URI'])); 
    exit(); 
    } 
} 
} 
$token=$facebook->getAccessToken(); 
$arrayForJSON = array(); 
function getUpdatedTime() 
{ 
    global $facebook,$user_id,$arrayForJSON; 
    if($user_id) { 
      try { 

    $updated_time= idx($facebook->api('me/updated_time'), 'data', array()); 
    if($updated_time) { 
     $arrayForJSON['updated_time']=$updated_time; 
    } 
    } 
    catch(FacebookApiException $e){ 
      error_log($e); 
     } 
    } 
} 
+0

Возможный дубликат [Функция PHP переходит в бесконечный цикл при определенных условиях] (http://stackoverflow.com/questions/16225700/php-function-goes-into-an-infinite-loop-under-conertain-conditions) – pilsetnieks

+0

@pilsetnieks Как вы можете видеть, это тоже мой вопрос, без подходящего ответа. Разница здесь в том, что если я назвал getLikes после writeJSON, это сработало. Здесь это не работает. –

+0

Я не знал, что var_dump можно использовать, понравилось, хотя var_dump wa в основном используется для отладки. – Viscocent

ответ

1

Я, как правило, держаться подальше от var_dump(); и достаточно использовать PRE теги сваливать и объект на экране. Я также считаю, что это более медленный метод для печати объекта. Вместо этого попробуйте следующий фрагмент кода, надеюсь, он решит вашу проблему с таймаутом.

echo('<pre>'); 
print_r($arrayForJSON); 
echo('</pre>'); 

Надеюсь, что это поможет!

+0

Спасибо! Это хорошее обходное решение, когда var_dump является капризным – TrtG

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