0

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 を実行していると思います。

編集:私の知る限り、これは問題ではないはずですが、最後のクラッシュの場所は、うまくいったリクエストとは異なりました:

http://www.mydomain.com:82/user/login/user@gmail.com/40.636518/3.632524http://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);

この行は、 APPLICATIONNAMEmemcachedからのすべての呼び出しに特定のプレフィックスを強制し、同じサーバーの下にあるアプリケーション間の問題を防ぎます。

于 2012-10-18T07:02:41.610 に答える