2017年9月16日土曜日

php5でPHP_INT_MINがない gethostname()も不安定?

最小、最大値を求めるために結局SQLで引っ張ってくるよりPHP内で転がした方が各raspberry piを転がすときに便利そうなので変更していました。

そこでPHP_INT_MAXとPHP_INT_MINを使って初期値を設定したわけですが、エラーを吐かないのに挙動がおかしくなってしまいました。



PHP_INT_MINはPHP7以降で使用可能。というのは見ていたのですが、エラーにならないから大丈夫かと思ったら、大丈夫じゃなかったという(笑)
最後のチェックでは0という表示になっていたので悩んでいたのですが、設定値した値をダイレクトに文字列にすると PHP_INT_MIN とか表示されて笑っちゃいました。

これに関しては、PHP7を入れてもよさそうですがとりあえず
const PHP_INT_MIN = -65536;
としておきました。本当の値にしてもよさそうですが、実用上マイナスは気温の計測範囲以下にはならない(内部は1000倍して扱ってますが)のでこれで十分。
const PHP_INT_MIN = -PHP_INT_MAX+1;
とかやると、floatに変換されそうで怖いし、実害ないレベルで。

constよりdefine()のほうが推奨っぽい雰囲気ですが、まぁこれでいいか?
PHPバージョンで切り替えてもよさそうだけども…phpでも条件コンパイルみたいなことができるのかな?

そして今日はもう一つ。

本体判別のために、gethostname()を使ってたのですが、どうも連続して呼び出していると失敗することがある様子。
仕方がないので$hostname=gethostname();とかで逃げておきました。

0 件のコメント:

コメントを投稿