数値かどうか? (PHP)

PHPでは変数が数値かどうかを確かめるための関数があります。
is_numeric($nanika)で$nanikaが数値ならtrueを返しますが、ここで注意が必要です。
注意としては、0xで始まる16進数や、小数、またはピリオドから始まる数字(たとえば”.12″など)も数値として判断されます。
整数のみを判別する場合は、is_int()を使うべきかもしれません。小数かどうかを判定するis_floatという関数もありますがこちらは、整数をfalseとし、”1e7″などの科学記法はtrueと判断されます。いわゆる「数字」というものがどれを指すか(指したいのか)を、十分考慮に入れて使用する必要があります。そのため、正規表現を用いた方が確実な場合もあります。

SQLiteのデータベースファイル最適化 (PHP)

PHP5には標準でSQLiteが付属しています。
データが一つのファイルで完結するので非常に管理が楽です。この点はバックアップなどでは有利です。

ところで、多くのデータベースで、レコードの追加、削除を繰り返すと、ファイルが肥大化してしまいます。(処理速度向上のため削除したレコードに削除フラグを立てるだけにすることが多いようです。)
SQLiteの最適化はVACUUMコマンドで行うことができます。
続きを読む SQLiteのデータベースファイル最適化 (PHP)

その日が存在するか? (PHP)

PHPで日付を生成する際にはチェックが必要な場合があります。
例えば、2100年2月29日は存在するか?といったことです。

閏年は4年に一度ですが、さらに100年に1度の2月29日はありません。さらに400年に一度は2月29日があります。従って2100年2月29日は存在しません。2200年2月29日も存在しません。ところが、2000年2月29日は存在します。

2000年2月29日を何の感慨もなく過ごしましたが、400年に1度の珍しい日であったようです。

続きを読む その日が存在するか? (PHP)

実行時間の最大値を制限 (PHP)

時間のかかる処理を行った場合、Maximum execution time of 30 seconds exceededというエラーで止まることがあります。
こんなときは以下のように対処します。

set_time_limit(60);

(数値は制限時間、この場合は60秒)
0をセットすることで、制限なしにもできますが、さくらインターネットのライトでPHPを使う場合は無視されている様子です。
呼び出しごとにタイマーがリセットされるので、処理の途中で再度呼び出すことで制限時間を延ばすことができます。

デジタルもアナログも