Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Youtube api youtube API有时会抛出错误:对非对象调用成员函数children()_Youtube Api_Php - Fatal编程技术网

Youtube api youtube API有时会抛出错误:对非对象调用成员函数children()

Youtube api youtube API有时会抛出错误:对非对象调用成员函数children(),youtube-api,php,Youtube Api,Php,当我启动php脚本时,有时工作正常,但很多时候它会检索到这个错误 致命错误:对中的非对象调用成员函数children() /membri/americanhorizon/ytvideo/rilevametadatadaurlyoutube.php在线 二十一, 这是代码的第一部分 // set feed URL $feedURL = 'http://gdata.youtube.com/feeds/api/videos/dZec2Lbr_r8'; // read feed into Simple

当我启动php脚本时,有时工作正常,但很多时候它会检索到这个错误

致命错误:对中的非对象调用成员函数children() /membri/americanhorizon/ytvideo/rilevametadatadaurlyoutube.php在线 二十一,

这是代码的第一部分

// set feed URL
$feedURL = 'http://gdata.youtube.com/feeds/api/videos/dZec2Lbr_r8';

// read feed into SimpleXML object
$entry = simplexml_load_file($feedURL);

$video = parseVideoEntry($entry);


function parseVideoEntry($entry) {      
  $obj= new stdClass;

  // get nodes in media: namespace for media information
  $media = $entry->children('http://search.yahoo.com/mrss/'); //<----this is the doomed line 21 
//设置提要URL
$feedURL='1http://gdata.youtube.com/feeds/api/videos/dZec2Lbr_r8';
//将提要读入SimpleXML对象
$entry=simplexml\u load\u文件($feedURL);
$video=parseVideoEntry($entry);
函数parseVideoEntry($entry){
$obj=新的stdClass;
//获取媒体中的节点:媒体信息的命名空间
$media=$entry->children('http://search.yahoo.com/mrss/“);//说明。”|“$video->length);
回声“
”; } 其他的 { $i--; } }

在此模式下,我强制脚本重新检查导致错误的文件

首先调用函数:

$entry = simplexml_load_file($feedURL);
该函数有一个返回值。您可以在该功能的手册页上找到它:

$entry = simplexml_load_file($feedURL);
然后以变量
$entry
的形式使用该返回值,而不验证函数调用是否成功

因此,您接下来会遇到一个错误。然而,您的错误是如何处理函数的返回值

不正确处理返回值就像自找麻烦。阅读您使用的函数,检查返回值,并根据成功或错误条件进行操作

$entry = simplexml_load_file($feedURL);

if (FALSE === $entry)
{
    // youtube not available.
}
else 
{
    // that's what I love!
}
有时?真正地 看看这个:

<?php

$dummy; //IN FACT, this var is NULL now

// Will throw exactly the same error you get
$dummy->children();

可能是一个超时问题,因为它是间歇性发生的。错误是在脚本启动后立即检索到的,因此它不是超时问题。此外,我从官方文档页面获取了这段代码。ohh您可以自己尝试脚本@h2oooo:var_dump retrieve me bool(false)当错误发生时happen@AnnaLica如果不是超时,YouTube可能会出现问题。False等于失败:“
或失败时为False。
”。如果您想获得更准确的详细信息,那么使用cURL获取数据,并使用
simplexml\u load\u string($outputFromCurlExec)将其转换为XML。嗯,这个问题听起来像是在che调用完成之前启动了函数。。所以我需要一些听众,告诉我什么时候通话结束。对吧?有点。您已经有了“listener”,它是
$entry
中的返回值。因此,通话将始终完成,但结果并不总是积极的。当您从远程服务加载数据时,可能会发生这种情况,例如网络错误和类似情况。想象一下,youtube的服务因为数据库问题而停止。因此,您需要针对错误进行设计。比如检查函数结果是否为假。因此,youtube似乎存在一个问题:(太好了!!!根据你的建议,我采用了一个温和的解决方案..如果变量不是一个对象,我将强制重新检查它!我更新了我的第一篇文章以共享代码
<?php

if ( is_object($dummy) && method_exists($dummy, 'children') ){
   //sure it works
   $dummy->children();
}