【发布时间】:2013-04-23 02:40:02
【问题描述】:
我遇到了一个奇怪的情况,我不太确定从哪里开始寻找。我在前端有一个 knockout.js 表单,在后端有 CakePHP。
截至目前,我将一些 JSON 数据从一个 knockout.js 表单发送到 CakePHP。这个 PHP 做了一些处理,然后将结果以 JSON 格式回显到剔除的 javascript 文件中。
好吧,问题是当我通过 CakePHP 设置这个 PHP 时,它似乎只工作了 1/4 的时间。当我在我的 webroot 中有这个 PHP 文件(只是一个标准文件,与 Cake 无关,因为敲除毕竟与后端无关)时,它 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 文件,但我必须查询数据库以获取一些信息,我希望将所有查询保留给 Cake 而不是外部源。
CakePHP 方法是否可能因为没有足够快地返回结果而花费太长时间而失败?
edit-我更改了控制器,因此没有计算,它只是将一些 JSON 编码的文本传递给视图。这不会产生任何错误,并且 100% 的时间都有效。那么,是否可以肯定地说 CakePHP 花费了太长时间导致错误?我知道一个框架比普通的 PHP 需要更长的时间,但是为什么这会导致它失败呢?我没有做任何激烈的计算。
【问题讨论】:
-
你能简单解释一下你在做什么样的计算吗?它涉及数据库查询吗?也许通过 requestAction 调用另一个动作?
-
@Headshota 首先我从我的数据库中抓取一个项目,然后我使用 PHPquery 从另一个站点抓取一些内容(其中 3 个实例),这可以理解,这可能需要很短的时间。但是,我不明白为什么 CakePHP 和标准 PHP 文件有如此大的不同。我什至尝试通过将该变量设置为等于预期值并将其用于 PHPquery 来消除 db 查询,但它偶尔仍然会失败,这让我相信 CakePHP 不适用于 PHPquery。
-
@Headshota 我应该澄清一下,我只从数据库中抓取一次内容,然后使用 PHPquery 从外部源抓取项目 3 次。
-
在我看来这是一个 PHPquery 问题。你有没有在框架之外测试过相同的功能,我很确定,你会得到相同的结果。
-
@Headshota 是的,正如我上面所描述的(查看我制作的小流程图了解更多细节)我在 Cake 之外使用了完全相同的 PHP,它 100% 的时间都可以工作。我没有直接调用 cakephp(比如 cake/items/123),而是直接调用位于我的 webroot 中的文件(items.php?item=123)。
标签: php javascript cakephp knockout.js