2012-07-11 45 views
9

Dịch vụ Tiết kiệm của tôi dự kiến ​​nhận được một số nguyên dài biểu thị dấu thời gian tính bằng mili giây, nhưng đến từ PHP, tôi biết tiết kiệm PHP được cho là tự động chuyển các loại PHP của tôi thành các loại tiết kiệm, nhưng loại PHP nào mong đợi cho số nguyên dài? Tôi nghĩ rằng máy tính của tôi là 64-bit, nhưng vì tôi nghĩ rằng chiều dài của các số nguyên PHP phụ thuộc vào nền tảng, tôi không thực sự muốn phụ thuộc vào độ dài phụ thuộc vào nền tảng cho các số nguyên của mình.Số nguyên dài PHP cho tiết kiệm

Tôi hiện đang lấy microtime() và nhân với 1000, sau đó chuyển thành số nguyên. Đây có phải là cách "chính xác" để hoạt động với PHP & dài intri không?

+0

Vui lòng tham khảo: http://stackoverflow.com/questions/864058/how-to-have-64-bit-integer-on-php –

+0

Không chính xác câu hỏi của tôi. Tiết kiệm một cách kỳ diệu chuyển đổi loại sang loại tiết kiệm, nhưng tôi không biết loại nào sẵn sàng chuyển đổi. Như tôi đã nói, tôi không thực sự muốn dựa vào hy vọng tôi có kiến ​​trúc 64-bit. – nnythm

+0

Tại sao nó phải là số nguyên? Có gì sai với dây? Bạn giao tiếp với tiết kiệm như thế nào? Qua HTTP hoặc là có một số phần mở rộng PHP cho phép bạn nói chuyện với nó thông qua một số giao thức khác (Tôi không biết những gì tiết kiệm được, google sản lượng Apache tiết kiệm)? Tôi không thấy một lý do nào để ép buộc một loại trong PHP nếu tất cả những gì bạn phải làm là chuyển một số mà PHP không có gì để làm với ý nghĩa rằng nó thực hiện các phép tính với nó. –

Trả lời

1

Có lẽ bạn nên sử dụng id kiểu string như như twitter: https://dev.twitter.com/docs/twitter-ids-json-and-snowflake

+0

Tôi đang sử dụng dịch vụ twitter sử dụng thời gian chờ. Tôi có thể thay đổi nó, nhưng sau đó tôi cũng sẽ phải thay đổi tất cả các mã twitter mà móc vào nó, mà sẽ là một nỗi đau. – nnythm

7

Bạn là đúng,

Kích thước của một số nguyên là nền tảng phụ thuộc, mặc dù một giá trị tối đa khoảng hai tỉ là giá trị thông thường (đó là 32 bit đã ký). Nền tảng 64 bit thường có giá trị tối đa khoảng 9E18. PHP không hỗ trợ các số nguyên không dấu. Kích thước nguyên có thể được xác định bằng cách sử dụng hằng số PHP_INT_SIZE và giá trị tối đa bằng cách sử dụng hằng số PHP_INT_MAX từ PHP 4.4.0 và PHP 5.0.5.

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

Nếu bạn sử dụng microtime() bạn không cần phải chia nó bằng 1000. phao của nó, bạn có thể muốn nhân nó bằng 1000.

Bạn có thể sử dụng BC Math cho calclulate nó như là con số, sử dụng các loại chuỗi. Tôi đoán chuỗi là OK để giao tiếp với bất kỳ điều nào khác.

Trong trường hợp nhân với 1000, bạn thậm chí không cần BCMath. Chỉ cần xóa dấu phẩy khỏi biểu thị chuỗi của microtime(true) (hoặc không gian từ microtime)

+0

cuộc gọi tốt, tôi nhân với 1000, tôi đã thay đổi câu hỏi của mình để phản ánh điều này. – nnythm

+0

Tôi muốn cung cấp cho bạn tiền thưởng, nhưng câu trả lời của bạn dường như không giải quyết được một phần câu hỏi của tôi liên quan đến Tiết kiệm. Bạn có biết bất cứ điều gì về cách tiết kiệm php mong đợi số nguyên dài để làm việc? – nnythm

+0

@nnythm, xin lỗi, nhưng tôi không thể thêm bất cứ điều gì – RiaD

Các vấn đề liên quan