【问题标题】:CakePHP find method crashes on live server when more than a few entries当多个条目时,CakePHP find 方法在实时服务器上崩溃
【发布时间】:2015-04-05 23:28:24
【问题描述】:

我在 CakePHP 中遇到了一个奇怪的错误,我不知道如何弄清楚发生了什么。 我正在使用 Ajax 请求为 dataTable 加载动态数据,它在我的本地主机上完美运行。出于某种原因,当我有多个条目时,我无法让它在我的实时服务器上工作。 调试后发现是find函数不起作用。当我的响应数组中有多个条目时,其中一个数组('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 server 上尝试了相同的 sql 代码,它运行良好。也没有内存问题,因为我使用的内存远远超出了我通常使用的内存,它只是一个 json 响应。 该函数本身也适用于小条目(可能不超过 5 个条目),但只要我在数据库中有更多条目,它就会崩溃。

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

【问题讨论】:

  • 请发布它构建的查询。
  • 在你的布局中使用&lt;?php echo $this-&gt;element('sql_dump'); ?&gt;并复制查询并在mysql上运行它,你会有一个更好的主意。
  • sql_dump 完全为空,查询为 SELECT SollProject.id, SollProject.date, SollProject.soll_ab, SollProject.haben_ab, SollProjectbuchungsbetragSollProjectbuchungstextSollProjectbelegartSollProjectbelegnummer FROM db397231557project_transactions AS SollProject WHERE SollProjectdate >= '2015-01-01' AND SollProject.date SollProject.soll_ab = (40865) ORDER BY SollProject.date跨度>

标签: php ajax cakephp crash find


【解决方案1】:

基本调试步骤:

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

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

【讨论】:

  • 谢谢,但我并不完全愚蠢......我已经将调试设置为 2,没有错误或任何显示。不幸的是,我无法检查任何服务器日志,因为我没有任何权限这样做,因为我正在这个糟糕的 Web 服务器上工作,我无法访问任何更深入的服务器信息......我检查了我的本地主机上的内存使用情况这是完全正常的。这是一个很大的页面,内存限制已经很高了,与我在页面上所做的相比,我请求的数据很小......
【解决方案2】:

好的,经过大量调试后,我似乎发现了问题: 由于某种原因,数据库中每个带有元音变音 (äüö) 的条目都会产生一个错误,导致 find 函数的结果数组不再起作用。 原来问题是实时服务器数据库 utf-8 加密被注释掉了......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    • 1970-01-01
    • 2022-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多