我写了一个脚本来阅读Netflix目录并填充我的数据库。 一切都很好用作网络剧本(超时除外)所以我转移到直接从控制台调用。
我注意到一些奇怪的东西,比如__construct()不再被调用(但是使用类名作为函数很容易解决。
现在我无法让我的数组像以前一样工作,这是一般的想法。
(实际上我已经尝试过几种组合,所以我会分享它们)
1 - 这在Web脚本版本中工作正常,不再适用于从控制台调用
//declare empty
var $genreArray=array();
//later I add values one at a time as the XML is parsed
array_push($this->genreArray,$attrs['term']);
//after I have parsed an entire "title" element, I iterate the array
foreach ($this->genreArray as $value) {
// never gets called - array seen as empty
$this->db->linkGenre($value,$this->title_uid);
}
2 - 所以我尝试了PHP手册;推荐 - 没什么
//declare empty
var $genreArray=array();
//later I add values one at a time as the XML is parsed
$this->genreArray[]=$attrs['term'];
//after I have parsed an entire "title" element, I iterate the array
foreach ($this->genreArray as $value) {
// never gets called - array seen as empty
$this->db->linkGenre($value,$this->title_uid);
}
3 - 所以最后我尝试手动跟踪索引
//declare empty array
var $genreArray=array();
var $gi=0;
//later I add values one at a time as the XML is parsed
$this->genreArray[$this->gi++]=$attrs['term'];
//after I have parsed an entire "title" element, I iterate the array
foreach ($this->genreArray as $value) {
// never gets called - array seen as empty
$this->db->linkGenre($value,$this->title_uid);
}
所以我现在完全被困住了。
有人声明空数组并通过控制台填充吗?
(所有这3个都通过网络工作 - 所以我需要一个控制台专家)
感谢您的支持,以下是要求的其他详细信息;
php -v
PHP 4.4.9(cli)(建于:2008年9月17日12:02:18) 版权所有(c)1997-2008 PHP小组 Zend Engine v1.3.0,版权所有(c)1998-2004 Zend Technologies Zend Technologies的Zend Extension Manager v1.2.2,版权所有(c)2003-2007 使用Zend Optimizer v3.3.3,版权所有(c)1998-2007,作者:Zend Technologies
每个代码段都在单独的运行中尝试过。你有兴趣了解这门课程的哪些细节?
我使用了echo语句来验证是否按预期调用了代码。如果我通过URL点击脚本,一切都会正常开始(前几千条记录直到超时)。
没有错误被抛出,我甚至尝试添加......
error_reporting(E_ALL);
ini_set('display_errors', true);
答案 0 :(得分:2)
我注意到一些奇怪的东西,比如__construct()不再被调用(但是使用类名作为函数很容易被重新编写。
听起来您的命令行和Web服务器PHP是不同的版本。你的CLI是PHP 4吗?函数phpversion()
将告诉您CLI和Web中的版本。
您检查过错误日志吗?你没有提到它,但那将是第一个看的地方。
答案 1 :(得分:1)
我注意到一些奇怪的事情,比如 __construct()不再被调用(但很容易使用 类名作为函数。
这看起来很奇怪。您在Web脚本中使用的PHP版本以及控制台中的哪个版本?
键入php -v会告诉你版本。
答案 2 :(得分:0)
要避免非CLI超时,您可以执行以下操作:
set_time_limit(0);
您似乎使用var
而不是public
来进行类属性声明,这与您无法使用__construct()
的事实一起让我猜你正在使用PHP 4,是吗?
$attrs['term']
在哪里宣布?
尝试var_dump($attrs['term']);
看看会发生什么。
另一个闻不到的东西是以下几行:
array_push($this->genreArray,$attrs['term']);
$this->genreArray[]=$attrs['term'];
$this->genreArray[$this->gi++]=$attrs['term'];
$attrs['term']
似乎是一个数组,但你并没有循环遍历它。除非这些线条属于它自己的独立方法,否则我认为有些不对劲。
另外,您提供的代码是我们课程的一部分吗?只是为了确保..
答案 3 :(得分:0)
尝试从var
var $genreArray=array();
我遇到了同样的问题并删除var
修复了它。