Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.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
CakePHP GET请求仅在部分时间失败_Php_Javascript_Cakephp_Knockout.js - Fatal编程技术网

CakePHP GET请求仅在部分时间失败

CakePHP GET请求仅在部分时间失败,php,javascript,cakephp,knockout.js,Php,Javascript,Cakephp,Knockout.js,我有一个奇怪的情况,我不太确定从哪里开始寻找。我在前端有一个knockout.js表单,在后端有一个CakePHP 现在,我将一些JSON数据从knockout.js表单发送到CakePHP。这个PHP进行一些处理,然后将结果以JSON格式返回到敲除javascript文件 问题是,当我通过CakePHP进行PHP设置时,它似乎只在1/4的时间内工作。当我在我的webroot中有这个PHP文件时(只是一个标准文件,与Cake无关,因为knockout毕竟是后端不可知的),它在100%的时间内工作

我有一个奇怪的情况,我不太确定从哪里开始寻找。我在前端有一个knockout.js表单,在后端有一个CakePHP

现在,我将一些JSON数据从knockout.js表单发送到CakePHP。这个PHP进行一些处理,然后将结果以JSON格式返回到敲除javascript文件

问题是,当我通过CakePHP进行PHP设置时,它似乎只在1/4的时间内工作。当我在我的webroot中有这个PHP文件时(只是一个标准文件,与Cake无关,因为knockout毕竟是后端不可知的),它在100%的时间内工作

下面是两个数据流

Fails frequently: knockout.html -> knockout.js -> CakePHP Controller -> echo in CakePHP view-> knockout.js -> knockout.html

Works 100%: knockout.html -> knockout.js -> PHP in webroot, echo from the same page -> knockout.js -> knockout.html
我只想在我的webroot中使用PHP文件,但我必须查询数据库中的一些内容,我希望所有查询都是最新的,而不是外部源代码

CakePHP方法是否可能因为没有足够快地返回结果而花费太长时间并失败


编辑-我更改了控制器,因此没有计算,它只是将一些JSON编码的文本传递给视图。这不会产生错误,并且在100%的时间内都有效。那么,可以安全地说CakePHP导致错误的时间太长了吗?我知道一个框架比普通的PHP需要更长的时间,但为什么这会导致它失败呢?我没有做任何紧张的计算。

我以一种非常迂回的方式让它工作。它现在100%的时间都在工作,但我不满意我的工作方式

正如我所解释的,我正在ItemsController中使用PHPQuery。我采用了所有这些逻辑,并在cake结构之外的webroot中创建了一个单独的PHP文件。因此,它不为相应的操作调用MyItemsController函数,而是调用webroot中的文件。我从这个文件访问数据库,查找我需要的内容,然后执行PHPQuery任务


很奇怪。100%在CakePHP之外工作。在CakePHP函数中使用时,失败率超过50%。我不明白,但至少它起作用了

你能简单地解释一下你在做什么样的计算吗?它是否涉及数据库查询?可能通过requestAction调用另一个操作?@Headshota首先我从数据库中获取一个项目,然后使用PHPquery从另一个站点获取一些内容(3个实例),这可能需要一些时间,这是可以理解的。然而,我不明白为什么CakePHP和标准PHP文件之间有如此大的不同。我甚至尝试通过将该变量设置为期望值并将其用于PHPquery来消除db查询,但有时仍然失败,这使我相信CakePHP不能很好地用于PHPquery。@Headshota我应该澄清,我只从数据库中获取一次内容,然后使用PHPquery从外部来源获取项目三次。在我看来,这似乎是PHPquery的问题。你有没有在框架外测试过同样的功能,我敢肯定,你会得到同样的结果。@Headshota是的,正如我上面所描述的(查看我制作的小流程图了解更多细节),我在Cake之外使用了完全相同的PHP,它100%都能工作。我没有对cakephp(比如cake/items/123)进行敲除调用,而是直接调用了位于webroot中的文件(items.php?item=123)。只是想知道,您使用PhpQuery到底是为了什么?通过JavaScript/jQuery直接获取外部数据不是更快吗?对于每个请求,通过PHP获取外部数据似乎需要很大的开销,除非您正在缓存结果。但是,我想这可能是因为我使用PHP的部分原因是为了隐藏一些代码,并且因为我必须查询数据库(使用PHP)。如果我没有弄错的话,Javascript对每个人都是可见的(至少是一个.js文件)。好吧,我注意到PhpQuery自2010年以来没有收到任何更新。缓存外部请求在大多数情况下都是可取的(当然这取决于您期望这些外部数据更改的频率)。还考虑PHP的内置DOM功能,这取决于您的需求,这可能是为了您的目的。请参阅文档和此问题