3

我有以下文件:
utils.php在哪里arrayForJSON定义
getLikes.php

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']);
?>

现在,如果我运行这个文件,AFTER running getLikes,它会一直运行到超时。如果我在之前运行它,它会返回null。如果我以相反的顺序运行文件,结果相同。

我应该怎么办..?我目前正在学习 php,但我有点卡住了。


编辑:不是重复-
建议的答案不合适,也不是该问题的好答案 - 这个问题似乎与 facebook 的 api 无关。另一方面,这里的不同之处在于,即使我首先调用learning_globals.php,它也会显示null并且再次调用getLikes.php会导致尝试直到超时。

我希望现在一切都清楚了


实用程序.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);
        }
    }
}
4

1 回答 1

1

我倾向于远离var_dump();,而是使用PRE标签来转储和反对屏幕。我还发现它是一种较慢的打印对象的方法。请尝试以下代码片段,希望它能解决您的超时问题。

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

我希望这会有所帮助!

于 2013-07-03T10:24:48.333 回答