[解决了]
我正在localhost上运行一个PHP脚本(包含一些包含的脚本),它在结束前不断崩溃.
错误报告已启用.Opera,Safari和Firefox返回空白屏幕.但Chrome返回:
无法加载网页,因为服务器未发送任何数据.错误代码:ERR_EMPTY_RESPONSE
Apache日志返回:
[Sun Dec 15 19:29:23 2013] [notice] child pid 34267退出信号分段故障(11)
当我第一次遇到问题时使用的是PHP 5.5.6降级到PHP 5.4.21之后问题仍然存在.
问题不在脚本内部.随机评论出50行代码解决了这个问题.让我想知道我的脚本是否可以长时间执行.
有没有人对我如何解决这个问题有任何建议?
更新:
问题不仅出现在localhost上,而且还出现在我在CentOs 6.4和PHP 5.3.3上运行的Web服务器上,在Apache上出现相同的错误.
[Sun Dec 15 23:15:10 2013] [notice] child pid 18409退出信号分段故障(11)
UPDATE2:
从命令行运行php给出:
$ php index.php致命错误:在第135行的Encrypt.class.php中调用未定义的函数mcrypt_create_iv()
在Encrypt.class.php的第135行之前发表评论
$ php index.php
分段错误:11
更新3 :(解决方案)
在使用strace(strace php index.php)在命令行上运行索引后,我在其中一个查询中发现了问题.
经过一些调试(使用PDO而不是我自己的类)后,我发现问题是设置了我自己的PDO选项"ATTR_PERSISTENT => true".禁用此选项解决了我的问题.
我有教程中的以下代码,但在模拟模式下它不起作用。
if(creep.memory.role == 'builder') {
if(creep.energy === 0) {
creep.moveTo(Game.spawns.Spawn1);
Game.spawns.Spawn1.transferEnergy(creep);
}
else {
var targets = creep.room.find(Game.CONSTRUCTION_SITES);
if(targets.length) {
creep.moveTo(targets[0]);
creep.build(targets[0]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
在控制台中打印“目标”的结果,响应未定义。谁能解释一下“CONSTRUCTION_SITES”常量是如何工作的以及如何在房间内找到它们?