<?php
ini_set('zend.exception_ignore_args', 1);
function main()
{
try {
foo(false);
} catch (Exception $ex) {
echo $ex->getMessage() . PHP_EOL;
}
try {
foo(true);
} catch (Exception $ex) {
echo $ex->getMessage() . PHP_EOL;
}
}
function foo($ok)
{
$file = new SplFileObject('/tmp/hoge.txt', 'a');
if ($file->flock(LOCK_EX|LOCK_NB) == false) {
throw new RuntimeException("Unable lock file");
}
bar($file, $ok);
// この関数を抜けたときにファイルは閉じられるはず
}
function bar(SplFileObject $file, $ok)
{
// なにか処理する
if ($ok == false) {
// 失敗したので例外を投げる
throw new RuntimeException("oops!!!");
}
echo "ok\n";
}
main();
- Output for 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.12
- oops!!!
ok
- Output for 7.2.0 - 7.2.34, 7.3.0 - 7.3.33
- oops!!!
Unable lock file
preferences:
79.19 ms | 407 KiB | 5 Q