私は未知の問題に直面しています。私はPHP API(Slimフレームワーク+ Slim PDO)をMysqlに接続して作成しました。私はHTTPサーバーとしてNginxを使用します。 APIはクライアント(アンドロイドアプリケーション)を認識するために "device-id"ヘッダーを使用します。気になるのは、最近アンドロイドアプリケーションをアップデートすると、このAPIの起動時に、ユーザーが不明な場合に結果APIに対して2つの非同期要求が行われることになります。同じデバイスID複数のリクエストが同時に悪いSQL結果
ミドルウェア
$user = new User($device_id, $ip);
ユーザクラスの
function __construct($device_id, $ip)
{
$this->_device_id = $device_id;
$this->_ip = $ip;
if ($this->isExists())
$this->updateInfo();
else
$this->createUser();
}
private function isExists()
{
global $db_core;
$selectStatement = $db_core->select(array('id', 'current_group'))
->from('users')
->where('device_id', '=', $this->_device_id);
$stmt = $selectStatement->execute();
if ($stmt->rowCount() > 0)
{
$u = $stmt->fetch();
$this->_id = $u['id'];
$this->_current_group = $u['current_group'];
return true;
}
return false;
}
でのcreateUser()関数は、日付などのデバイスIDを持つユーザテーブル内のエントリ、ならびに他の情報を作成しそうです。
DEVICE_IDフィールドは、テーブルに一意であることが想定される場合には、それのために一意のインデックスを追加あなたの助けのために事前に
簡単な注意:PDO接続オプション 'PDO :: ATTR_ERRMODE => PDO :: ERRMODE_EXCEPTION 'は、' PDOException'がスローされるように設定する必要があります。 – DanielO
良い点、ありがとうございます。 –