我有一个连接到Zend应用程序API的iOS应用程序。当用户登录时,URL和请求如下:
url http://www.mydomain.com:82/user/login/user@gmail.com/40.636518/3.632524
<NSMutableURLRequest http://www.mydomain.com:82/user/login/user@gmail.com/40.636518/3.632524>
我们有用户电子邮件和经纬度的地方。另外,我通过参数发送用户密码:
password=sha1password0123456789&
这些是我的路线:
routes.userlogin.route = '/user/login/:email/:latitude/:longitude'
routes.userlogin.defaults.controller = user
routes.userlogin.defaults.action = login
这是控制器的代码:
...
$data = $this->getRequest()->getParams();
/* Here I print the $data object */
...
所以,有时我会收到这个$ data(这没关系):
Array(
[email] => user@gmail.com
[latitude] => 40.636518
[longitude] => 3.632524
[controller] => user
[action] => login
[password] => sha1password0123456789)
还有一些时候,我得到了这个(这会导致登录崩溃):
Array(
[controller] => user
[action] => login
[user@gmail.com] => 40.636301
[module] => default
[password] => sha1password0123456789)
我是否以正确的方式检索参数?事务是通过POST方法完成的,我想我正在运行ZendFramework-1.11.11。
编辑:AFAIK这应该不是问题,但上次崩溃的位置与正常的请求不同:
http://www.mydomain.com:82/user/login/user@gmail.com/40.636518/3.632524
VS
http://www.mydomain.com:82/user/login/user@gmail.com/40.636301/3.632206
答案 0 :(得分:0)
我已经解决了这个问题,这是memcached
的一个问题。我的应用程序当前与其他人共享同一个测试服务器,但由于Zend_Cache
缺少cache_id_prefix
属性,它似乎崩溃了。
将以下行添加到AppPlugin.php
解决了问题:
$frontendOpts = array(
'caching' => true,
'lifetime' => 1800,
'automatic_serialization' => true,
'cache_id_prefix'=>'APPLICATIONNAME_' // This solved the problem
);
....
$cache = Zend_Cache::factory('Core', 'Memcached', $frontendOpts, $backendOpts);
此行强制所有来自 APPLICATIONNAME 的memcached
来电具有特定前缀,并防止生活在同一服务器下的应用程序之间出现问题。