Skip to main content
 首页 » 编程设计

php之当多个条目时,CakePHP查找方法在实时服务器上崩溃

2025年05月04日30qlqwjy

我在CakePHP中遇到一个奇怪的错误,而且我不知道如何弄清楚发生了什么。
我正在使用Ajax请求来加载dataTable的动态数据,并且它在我的本地主机上运行良好。由于某些原因,当我有多个条目时,无法在实时服务器上运行它。
调试后,我发现这是查找功能不起作用。当我的响应数组中有多个条目时,其中一个数组('SollProject')就完全是空的,整个脚本将停止工作。

这是我的代码:

        $project = $this->Project->find("first", array('conditions'=>array('id'=>$project_id) , 
                        'contain' => array( 
                            'SollProject' => array( 
                                'conditions'=> array( 
                                    'SollProject.date >=' => $year.'-01-01', 
                                    'SollProject.date <=' => $year.'-12-31' 
                                ) 
                            ), 
                            'HabenProject'=> array( 
                                'conditions'=> array( 
                                    'HabenProject.date >=' => $year.'-01-01', 
                                    'HabenProject.date <=' => $year.'-12-31' 
                                ) 
                            )))); 

知道我在这里做错什么或为什么它不能在实时服务器上工作吗?如果您想知道,没有afterFind方法。

也许我应该提到我已经尝试了错误调试,但没有收到任何错误消息。我还在sql服务器上尝试了相同的sql代码,它运行良好。也没有内存问题,因为我使用的内存是我通常使用的内存,并且只是json响应。
该函数本身也适用于较小的条目(最多不超过5个条目),但是一旦数据库中有更多条目,它就会崩溃。

有趣的是,我可以 debug($project['HabenProject']),它向我展示了所有的HabenProject,但是如果我尝试 debug($project['SollProject'])或只是 debug($project),则变量为空。它甚至没有声明为数组。没有输出。该页面的其余部分仍在显示。

请您参考如下方法:

基本调试步骤:

  • 将调试设置为2
  • 检查您的CakePHP应用程序日志
  • 检查php日志
  • 检查Web服务器日志

  • 但是,我想这是内存限制,并且调试已关闭,这可能就是为什么您获得白页的原因。检查内存使用情况并增加php内存限制。