データベースサーバ側の問題なので、サーバプロセス内で終了させる必要がありますが。bash KILLコマンドは使用しないでください(データベースが壊れるので)。1. PostgreSQLであればSELECT * FROM pg_stat_activity;で、MySQLであればSHOW full processlist;を使って、現在動作中のクエリを調べ、PHPから送り出したと思われるクエリのpidを取得する2. PostgreSQLであればSELECT pg_cancel_backend(<実行中のpid>);で、MySQLであればkill <実行中のpid>;を使って、現在動作中のクエリのpidを停止する※ MySQLの場合、kill コマンドは MySQLのDBに接続した状態で使うこと(bash KILLではない)
その読み込むPHPのスクリプト内でデータエラーを弾く処理を書くのが普通の対応。
Re:3 せやね。初段階のテストで失敗したのであれば2でいいけど、本番でやられたら溜まったものではない。早いうちにエラーハンドラ組み込んでおくのが上策だね。
3 件の回答
データベースサーバ側の問題なので、サーバプロセス内で終了させる必要がありますが。bash KILLコマンドは使用しないでください(データベースが壊れるので)。
1. PostgreSQLであれば
SELECT * FROM pg_stat_activity;
で、MySQLであれば
SHOW full processlist;
を使って、現在動作中のクエリを調べ、PHPから送り出したと思われるクエリのpidを取得する
2. PostgreSQLであれば
SELECT pg_cancel_backend(<実行中のpid>);
で、MySQLであれば
kill <実行中のpid>;
を使って、現在動作中のクエリのpidを停止する
※ MySQLの場合、kill コマンドは MySQLのDBに接続した状態で使うこと(bash KILLではない)
その読み込むPHPのスクリプト内でデータエラーを弾く処理を書くのが普通の対応。
Re:3
せやね。初段階のテストで失敗したのであれば2でいいけど、本番でやられたら溜まったものではない。早いうちにエラーハンドラ組み込んでおくのが上策だね。