0

我有一个连接到 Zend 应用程序 API 的 iOS 应用程序。用户登录时,url和requests如下:

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 对比 http://www.mydomain.com:82/user/login/user@gmail.com/40.636301/3.632206

4

1 回答 1

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);

此行强制memcached来自APPLICATIONNAME的所有调用具有特定前缀,并防止位于同一服务器下的应用程序之间出现问题。

于 2012-10-18T07:02:41.610 回答