có ai đó biết cách có số nguyên 64 bit trên PHP không? nó có vẻ như nó không phải là bằng tập tin cấu hình mà là nó có thể là một lựa chọn thời gian biên dịch và nó phụ thuộc vào nền tảng?làm thế nào để có số nguyên 64 bit trên PHP?
Trả lời
Số nguyên 64 bit gốc yêu cầu phần cứng 64 bit VÀ phiên bản 64 bit của PHP.
Mở phần cứng 32-bit:
$ php -r 'echo PHP_INT_MAX;'
2147483647
Mở phần cứng 64-bit:
$ php -r 'echo PHP_INT_MAX;'
9223372036854775807
Tôi nghĩ rằng hầu hết PC mới hiện nay có thể chạy 64 -bit Windows Vista? Đó có phải là những gì cần thiết? Hệ điều hành 64 bit và sau đó cài đặt phiên bản PHP 64 bit? tại trang tải xuống của PHP tôi không thấy phiên bản 64 bit. ai đó có thể chỉ cho tôi không? nó là "PHP 5.2.1 x64 Project"? –
Tôi không biết cụ thể của Vista (mặc dù, có, bạn sẽ cần hệ điều hành 64-bit quá) .. có vẻ như các nhị phân biên dịch chỉ có sẵn tại URL này và không có trên trang web PHP (tìm thấy này là kết quả đầu tiên khi Googling "64-bit PHP"): http://www.fusionxlan.com/PHPx64.php Và nếu biên dịch từ nguồn, chỉ có một phiên bản cho 32-bit và 64-bit .. – scotts
ở trên * chỉ * hoạt động trên phần cứng x64 "với" phiên bản PHP x64 (không chính thức) được cài đặt. Có phiên bản 32 bit chính thức mới nhất được cài đặt trên hệ điều hành x64 mang lại kết quả đầu tiên (và bạn có thể phải sử dụng dấu ngoặc kép để nhập câu lệnh trên). – Bil
Kích thước int PHP phụ thuộc vào nền tảng. Có một hàm được gọi là giải nén() về cơ bản cho phép chuyển đổi các loại dữ liệu khác nhau từ chuỗi nhị phân sang biến PHP. Nó có vẻ là cách duy nhất để lưu trữ như là 64 bit là để lưu trữ nó như là một chuỗi.
tôi thấy đoạn mã sau vào: http://www.mysqlperformanceblog.com/2007/03/27/integers-in-php-running-with-scissors-and-portability/
/// portably build 64bit id from 32bit hi and lo parts
function _Make64 ($hi, $lo)
{
// on x64, we can just use int
if (((int)4294967296)!=0)
return (((int)$hi)<<32) + ((int)$lo);
// workaround signed/unsigned braindamage on x32
$hi = sprintf ("%u", $hi);
$lo = sprintf ("%u", $lo);
// use GMP or bcmath if possible
if (function_exists("gmp_mul"))
return gmp_strval (gmp_add (gmp_mul ($hi, "4294967296"), $lo));
if (function_exists("bcmul"))
return bcadd (bcmul ($hi, "4294967296"), $lo);
// compute everything manually
$a = substr ($hi, 0, -5);
$b = substr ($hi, -5);
$ac = $a*42949; // hope that float precision is enough
$bd = $b*67296;
$adbc = $a*67296+$b*42949;
$r4 = substr ($bd, -5) + + substr ($lo, -5);
$r3 = substr ($bd, 0, -5) + substr ($adbc, -5) + substr ($lo, 0, -5);
$r2 = substr ($adbc, 0, -5) + substr ($ac, -5);
$r1 = substr ($ac, 0, -5);
while ($r4>100000) { $r4-=100000; $r3++; }
while ($r3>100000) { $r3-=100000; $r2++; }
while ($r2>100000) { $r2-=100000; $r1++; }
$r = sprintf ("%d%05d%05d%05d", $r1, $r2, $r3, $r4);
$l = strlen($r);
$i = 0;
while ($r[$i]=="0" && $i<$l-1)
$i++;
return substr ($r, $i);
}
list(,$a) = unpack ("N", "\xff\xff\xff\xff");
list(,$b) = unpack ("N", "\xff\xff\xff\xff");
$q = _Make64($a,$b);
var_dump($q);
UPDATE: Nó bây giờ (thử nghiệm trên AMD Quad Core, Windows 8.1).
Lưu ý rằng PHP trên Windows không hỗ trợ các số nguyên 64 bit, ngay cả khi cả phần cứng và PHP là 64 bit. Xem this link để biết chi tiết:
Trên cửa sổ x86_64, PHP_INT_MAX là 2147483647. Điều này là do trong cơ bản c-mã, một chặng đường dài là 32 bit.
Tuy nhiên, Linux trên x86_64 sử dụng một 64bit dài nên PHP_INT_MAX sẽ là 9223372036854775807.
Ý của bạn là gì "hiện tại"? Tôi thấy rằng PHP 7 trên Windows 64 hỗ trợ các số nguyên 64 bit. Có bản phát hành 5.x PHP nào không? Nếu vậy, bạn lấy nó ở đâu? –
Tôi cũng quan tâm đến cách nhận hỗ trợ int 64 bit trên Windows –
Hiện tại, anh ấy có nghĩa là PHP 7, điều này được gọi là [Hỗ trợ 64 bit nhất quán] (http://php.net/releases/7_0_0. php). – Benjamin
Bây giờ bạn sẽ nhận được PHP 7 - Hỗ trợ 64bit hoàn toàn phù hợp. Không chỉ số nguyên, mà còn tất cả các fstat, IO, vv PHP 7 trên Windows là đúng 64-bit.
Tôi vừa nâng cấp lên các số nguyên PHP 7 và 64 bit vẫn không có sẵn. Bất kỳ ý tưởng những gì tôi có thể làm gì? –
Clifton, đảm bảo bạn đang sử dụng bản dựng 64 bit. –
Vâng, hóa ra máy chủ Ubuntu của tôi chỉ là 32-bit. Tôi phải nâng cấp. –
- 1. làm thế nào để có được số nguyên 64 bit trong lisp chung?
- 2. tạo ngẫu nhiên số nguyên 64 bit
- 3. Làm thế nào để biên dịch chương trình C++ thành 64-bit trên máy 64 bit?
- 4. Lua có sử dụng các số nguyên 64 bit không?
- 5. Làm thế nào để tạo ra các số nguyên 64 bit duy nhất từ Python?
- 6. Làm thế nào để xác định số nguyên 64 bit trong c
- 7. Làm thế nào để in số nguyên 64 bit trong GCC 4.4.1?
- 8. Chỉ định các số nguyên nguyên không dấu 64 bit trên các mô hình dữ liệu 64 bit
- 9. Pack và giải nén 64 bit số nguyên
- 10. Làm cách nào để lưu trữ số nguyên 64 bit chưa ký trong SQL Server?
- 11. Trình bày một số nguyên 64 bit trong GNU/Linux
- 12. C++: Có an toàn khi so sánh số nguyên 64 bit với số nguyên 32 bit không?
- 13. NSDecimalNumber và số nguyên lớn dài (64 bit)
- 14. Chuyển đổi số nguyên 64 bit từ chuỗi
- 15. Có chức năng htonl "chuẩn" nào cho các số nguyên 64 bit trong C++ không?
- 16. php 64 bit với php_int_max = 2147483647
- 17. Làm thế nào để đúc một số nguyên 32 bit từ unsigned để đăng nhập vào MySQL hoặc PHP?
- 18. Làm thế nào tôi có thể làm số học 64 bit trong Perl?
- 19. Làm thế nào người ta có thể đọc một bit số nguyên bằng bit trong Java?
- 20. Làm cách nào để hiển thị số đôi 64 bit bằng VBScript trên Hệ điều hành 32 bit?
- 21. nguyên tử trong 32/64 bit
- 22. con trỏ C++ trên máy 64 bit
- 23. Làm cách nào để thiết kế hệ số mảng 64 x 64 bit trong Verilog?
- 24. Làm cách nào để nhận libpam.so.0 (32 bit) trên RHEL6 64 bit của tôi?
- 25. Làm cách nào để chạy API được tạo cho 32 bit trên máy tính 64 bit?
- 26. XDebug không tải trên Windows 7 64 bit PHP 5.4
- 27. Làm thế nào có thể một cmd.exe 32-bit khởi động một cmd.exe 64-bit trên Windows Server 2003 x64?
- 28. python 32-bit và 64-bit số nguyên toán với tràn ý định
- 29. Làm thế nào để viết một std :: bitset mẫu hoạt động trên 32 và 64-bit
- 30. Boost.Test trên Windows 64 bit
tôi đang tìm kiếm thêm "số nguyên là giải pháp 64 bit", do đó, không muốn sử dụng mô-đun cho số nguyên lớn. –
Lưu ý phụ: Tôi đã tìm thấy một số tệp nhị phân PHP 64 bit tại: http://tommymontgomery.com/php64 –
có thể trùng lặp [các đặc điểm thiết lập PHP sao cho các số nguyên sẽ là 64 bit?] (Http://stackoverflow.com/questions/870401/what-are-the-specifics-of-setting-up-php-so-that-integers-will-be-64-bit) –