こんにちは、オブジェクト (Class Users) をシリアル化して $_SESSION 配列に設定しました。ユーザーが Web サイトにログインすると、そのオブジェクトは $_SESSION に設定され、後でメソッドを使用するために非シリアル化されますが、渡すクラスで問題が発生します__constructor (MySQL に接続されている) の PDO オブジェクトと PDO オブジェクトにメンバー変数を設定しましたが、「コンテナー オブジェクト」を非シリアル化すると __constructor 関数が実行されないため、PDO オブジェクトであるメンバー変数は実行されません。 PDO オブジェクトもシリアライズしようとしましたが、拡張された「MyPDO」クラスに __sleep() および __wakeup() 関数を追加して PDO オブジェクトをシリアライズできません。どうすれば解決できますか? ありがとう
質問する
261 次
2 に答える
0
そのため、単純にユーザーの詳細の配列をセッションに保存できます。このセッションとは別に、ファイル ストアではなくオブジェクト ストアであるため、PDO オブジェクトをシリアル化する必要なく、PDO をセッションに直接保存できます。
于 2012-11-21T14:15:51.657 に答える
0
まず、pdo オブジェクトをセッションに保存しないでください。開いている接続の合計には制限があるため、すべての接続が発生すると「接続が多すぎます」というエラーが発生します。これは、mysql データベースに対して作成できる最大同時接続を定義する max_connection の my.cnf を設定する mysql 構成があることを意味します。そのため、セッションで pdo を保存しないでください。推奨事項は、SQLクエリ文字列を作成した後に接続を作成する必要があることを示しています。
リクエストごとに、新しい接続を作成する必要があります。以下のように
// create sql query
// create connection to database
// begin transaction if require
// prepare statement
// execute query
// close statement object
// // commit changes if transaction
于 2012-11-01T14:16:26.523 に答える