アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在、PHPでホームページを開発中で、XAMPPで試行錯誤しています。
数回(5~10回程度) SQL文を流すとApach自体が落ちる?サーバに接続出来ない状態になってしまいます。

自分の予想だと、接続が解除出来ていず複数接続になってしまい落ちているのかと思っています。
XAMPPのバージョンは1.7.3です。
実際に作成したログイン画面のソースコードを貼ります。
よろしくお願いいたします。

$server = "localhost";
$id = "ID";
$pw = "パスワード";
$dbname = "dbname";

$conn = mysql_connect($server, $id, $pw );
if( $conn == false )
{
die("MySQL 接続エラー");
}
mysql_select_db( $dbname );

$sql = " SELECT * FROM user where user_id='".$_POST["user_name"]."'";
$res = mysql_query( $sql );
while( $row = mysql_fetch_array( $res ) )
{
// ログイン画面から取得したPWとデータベースのパスワード(pass)を照合する
if($cryptpass == $row["password"]){
$user = new User($row["user_id"], $row["mail"]);
$_SESSION["user"] = serialize($user);
}
}

mysql_free_result($resource);
mysql_close();

A 回答 (2件)

php側で、無限ループしたりメモリーオーバーしたりして、phpプログラムが落ちたときに、phpがapacheのモジュールモードだと、apacheも連動しておちます(反応しなくなる)。


cgiモードで動作させると、phpだけタイムアウトしてくれるので、apacheは落ちません。
とはいえ、phpが落ちる原因のデバッグは、プログラムを削って作業を切り分けていくしかありませんけど。
たぶん、提示部分ではなく、クラス作成呼び出しのどこかで、何か無限ループするような作業があるとか、じゃないのかな??
それとも、もし、データベース接続用クラスを複数使ってる(=複数の接続が一回のプログラム実行中に発生)なら、接続idを指定してないために、おかしなことになってるのかも。
あと、PDOを使う自作クラスで、__destroy() メソッドで、接続を切ろうとしておかしなことになったこともあった。実行順番の問題らしかったけど、よくわからず、その時は明示的切断はしないことにしてしまったけど。
    • good
    • 0

コピペミスかもしれませんが、



> mysql_free_result($resource);

$res じゃなくて?

気になったのはそれくらいですね。
最後の2行はなくても良い気がします。

#質問と関係ないですが、ここだけ読むとSQLインジェクション可能なコードですよ。
    • good
    • 0
この回答へのお礼

ご返事ありがとうございます。
クラス化してたのでコピペミスしていました。$resのことですね。

動きそうなんですよね・・・なぜか固まってしまいます・・・

お礼日時:2011/01/10 13:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!