9

私の Thrift サービスは、ミリ秒単位のタイムスタンプを表す Long 整数を受け取ることを期待していますが、PHP から来ているので、PHP thrift は自動的に私の PHP 型を thrift 型に変換することになっていることを知っています。私のコンピューターは 64 ビットだと思いますが、PHP 整数の長さはプラットフォームに依存すると思うので、プラットフォームに依存する整数の長さに依存したくありません。

現在、microtime() を取得して 1000 を掛けてから、整数に変換しています。これは、PHP を使用して long int を節約する「正しい」方法ですか?

4

2 に答える 2

7

あなたが正しいです、

整数のサイズはプラットフォームに依存しますが、最大値は約 20 億が通常の値です (符号付き 32 ビット)。通常、64 ビット プラットフォームの最大値は約 9E18 です。PHP は符号なし整数をサポートしていません。PHP 4.4.0 および PHP 5.0.5 以降では、整数サイズは定数 PHP_INT_SIZE を使用して決定でき、最大値は定数 PHP_INT_MAX を使用して決定できます。

http://www.php.net/manual/en/language.types.integer.php

使用する場合microtime()は、1000 で割る必要はありません。その float には、1000 を掛けることができます。

文字列型を使用して、数値として計算するためにBC Mathを使用できます。文字列は他のものと通信しても問題ないと思います。

1000倍の場合は も必要ありませんBCMath。の文字列表現からカンマを削除するだけですmicrotime(true)(またはスペースからmicrotime

于 2012-07-17T15:47:51.447 に答える
1

たぶん、Twitterのように文字列タイプのIDを使用する必要があります:https ://dev.twitter.com/docs/twitter-ids-json-and-snowflake

于 2012-07-14T14:17:11.207 に答える