読者です 読者をやめる 読者になる 読者になる

taiyoh's memorandum

@ttaiyoh が、技術ネタで気づいたことを書き溜めておきます。

Test_myqld.phpを更新しました

以前のエントリ→ "Test_mysqld", ported from cpan's Test::mysqld - taiyoh独言
taiyoh/Test_mysqld-php · GitHub
このモジュールを作ってまもなく、id:memememomoさんに色々直していただいたのですが、

例外でプログラムが終了しないように気をつけるようにするのはそうなんですが、テスト中のプログラムではやっぱ例外で終了しちゃうケースもある気がするのです。そのたびに、mysqldが残っちゃうのはやだなーと思うのです。

確実にmysqldを終了させる方法があるのでしょうか?

[php]Test_mysqldというものができたけど、まだ問題があって悩んでいる件 - メメメモモ

というのを今更ながらに見つけまして><
あんまりいい解決策じゃないかもしれませんが、子プロセスのPIDを定数としてキープしておいて、register_shutdown_functionでサクッと該当するPIDを落とすようにしてみました。

<?php

// モジュール読み込み
include_once('Test_mysqld.php');

// 設定
$my_cnf = array('skip-networking' => '');
$opts   = array();

// mysqld起動
$mysqld = new Test_mysqld($my_cnf, $opts);

// 例外で終わる
throw new Exception();

上記コードで子プロセスがなくなっていることは確認しました。微妙に終わり方はアレなのですが。
あと、気づいたらテストコードがセグフォで落ちるようになってた。。。上のコードは問題ないのですが。。。

(追記)
PDOでなんか起きてた。うむむ。。。