Bản dựng php nào dành cho hệ thống 32 bit

Vì vậy, trang web hiện tại của bạn - nếu chạy PHP - và nó dường như hoạt động tốt. Tuy nhiên, tôi đang làm việc trên một dự án, trong đó các máy chủ mới đang chạy trên phiên bản HĐH 64 bit. Thay đổi này dường như gây ra một số vấn đề tiềm ẩn và vì dường như không có bộ sưu tập tài nguyên nào về các vấn đề này, tôi sẽ cố gắng đăng một số ghi chú về trải nghiệm này. Xin vui lòng thêm các ghi chú và liên kết áp dụng trong các nhận xét

Trải nghiệm đầu tiên của chúng tôi là tất cả các tập lệnh của chúng tôi dường như sử dụng nhiều bộ nhớ hơn so với trên máy chủ cũ, nhưng cũng có một số thách thức 64 bit khác, bạn nên lưu ý. Bài đăng này đang cố gắng cung cấp một cái nhìn tổng quan về những thay đổi này

Vấn đề số nguyên

Trên HĐH 32 bit, PHP sử dụng 4 byte (8 bit) để xác định số nguyên. Trên hệ thống 64 bit, PHP sử dụng 8 byte (của 8 bit) để xác định một số nguyên và do đó cho phép nó lưu trữ một phạm vi số xa hơn

Bạn có thể kiểm tra điều này bằng một tập lệnh đơn giản như thế này

 echo 'The integer size on this system is: ';
 echo PHP\_INT\_SIZE. '  
';

 echo 'The maximum value you can save in an integer is: ';
 echo PHP\_INT\_MAX;

Trên 32 bit, tập lệnh sẽ xuất ra

Kích thước số nguyên trên hệ thống này là. 4 Giá trị lớn nhất bạn có thể lưu trong một số nguyên là. 2147483647

Trên 64 bit, tập lệnh sẽ xuất ra

Kích thước số nguyên trên hệ thống này là. 8 Giá trị lớn nhất bạn có thể lưu trong một số nguyên là. 9223372036854775807

Nói chung nhược điểm duy nhất của phương pháp này là tăng mức sử dụng bộ nhớ và có thể làm giảm hiệu suất

  • cung cấp cho bạn tập lệnh không cần thêm 32 bit được cung cấp trên hệ thống 64 bit

Tập lệnh nhỏ đơn giản này có thể minh họa một cách đơn giản việc sử dụng bộ nhớ tăng lên

$test = array();

for ($counter = 0; $counter < 10000; $counter++) {
  $test\[$counter\] = $counter;
}

echo "Memory peak usage: ", memory\_get\_peak\_usage();

Trên hệ thống 32 bit, đầu ra số từ tập lệnh là (khoảng). 810020. Trên hệ thống 64 bit, đầu ra số từ tập lệnh là (khoảng). 1517960. Đó là mức tăng sử dụng bộ nhớ hơn 80% trên một mảng số nguyên đơn giản

Thời gian và ngày tháng

Lưu ý rằng nhiều hàm liên quan đến thời gian trong PHP hoạt động với số nguyên - chẳng hạn như mktime, strtotime và các hàm khác sử dụng số nguyên làm giá trị trả về. Miễn là bạn sử dụng và làm việc với những thứ này trong ranh giới 32 bit, bạn sẽ ổn thôi

Trên các hệ thống 64 bit, chúng có thể xử lý phạm vi lớn hơn nhiều, điều này có thể gây ra sự cố nếu bạn cho phép điều đó xảy ra

Bộ nhớ và hiệu suất

Khi khối lượng dữ liệu được di chuyển xung quanh tăng lên, bạn có thể gặp phải một hình phạt về hiệu suất. Trên các trang web có lưu lượng truy cập thấp, đó có thể không phải là vấn đề, nhưng nếu bạn đang lưu trữ một trang web có lưu lượng truy cập cao, thì vấn đề đó có thể mở rộng ra một chút.

Bộ nhớ bổ sung dường như là một vấn đề lớn hơn nhiều cần lưu ý. Mặc dù bạn chỉ có thể cho rằng mình sử dụng một số lượng nhỏ số nguyên, nhưng bản thân PHP cũng sử dụng chúng ở nhiều nơi. Khi bạn đang tạo mảng - chúng có thể được lập chỉ mục bởi số nguyên và nhiều hàm trả về số nguyên dưới dạng mã điều khiển. Mặc dù bộ nhớ được yêu cầu không tăng gấp đôi, nhưng hãy mong đợi chi phí hoạt động từ 25-50% tùy thuộc vào những gì tập lệnh thực hiện - từ những trải nghiệm ban đầu;

Dịch chuyển bit

Nói chung, bạn nên lưu ý rằng mọi nơi bạn sử dụng các hoạt động dịch chuyển bit, vì bản chất của chúng, hoàn toàn phụ thuộc vào số lượng bit trong các biến có sẵn

Xử lý băm

Nếu bạn đang sử dụng giá trị băm cho tổng kiểm tra, hãy cẩn thận. Một số sự cố 64 bit có thể xảy ra

Chúng tôi đã thấy sự cố này trên chức năng crc32. Nếu kết quả của CRC32 là một số dương (trên hệ thống 32 bit), nó sẽ giống nhau trên hệ thống 64 bit. Tuy nhiên, nếu kết quả CRC32 là số âm, kết quả trả về trên hệ thống 64 bit sẽ khác

kịch bản này

  echo "

Letters 'ab'  
";
  echo crc32('ab');
  echo "

";

Tạo đầu ra sau trên hệ thống 32 bit

Chữ cái 'ab' -1635563411

Nhưng trên hệ thống 64 bit, nó tạo ra đầu ra này

Chữ cái 'ab' 2659403885

Lưu ý rằng hàm băm được trả về luôn giống nhau, vì vậy nếu bạn đang sử dụng hàm băm crc32 trên thiết lập 32 bit hoàn toàn HOẶC thiết lập 64 bit hoàn chỉnh, bạn có thể gặp bất kỳ sự cố nào, trong khi môi trường hỗn hợp có thể sẽ gây ra sự cố

Các hàm băm như MD5, SHA1 và các hàm khác - sẽ luôn tạo ra cùng một kết quả cho dù chúng đang chạy trên hệ thống nào

PHP, MySQL và 64 bit

Mysql xử lý số nguyên khác với PHP. Một số nguyên trong mysql luôn có cùng kích thước cho dù nó chạy trên hệ thống 32 hay 64 bit. Một số nguyên luôn là 32 bit. Nếu bạn cần lưu trữ số nguyên 64 bit, mysql có loại dữ liệu rõ ràng - BigInt hoặc mục đích này, là Số nguyên 64 bit (xem hướng dẫn mysql về Loại số)

Cách xử lý mysql dường như phụ thuộc vào loại giải pháp PHP mà bạn đang xây dựng. Nếu ứng dụng của bạn được triển khai trên một số máy chủ (có thể là sự kết hợp của hệ thống 32 và 64 bit), thì có hai chiến lược cốt lõi - là xử lý ứng dụng đó bằng PHP hoặc bằng Mysql

Xử lý sự cố trong PHP có thể sẽ gợi ý cho bạn một số cách “kiểm tra phạm vi” các giá trị số nguyên PHP và đảm bảo giá trị nằm trong phạm vi cho phép của số nguyên 32 bit

Xử lý sự cố trong Mysql, có nghĩa là chỉ cần thay đổi các số nguyên trong cơ sở dữ liệu thành BigInts. Điều này sẽ luôn hoạt động, nhưng đối với tất cả hệ thống 32 bit là một giải pháp kém hiệu quả hơn

Sự khác biệt giữa PHP 7 là gì. 4 và 8?

Q. Sự khác biệt giữa PHP 7 là gì. 4 và 8? . Một trong nhiều ví dụ là, WordPress trên PHP 8. 0 có thể xử lý 18. Nhiều hơn 4% yêu cầu mỗi giây so với PHP 7. 4 . Hơn nữa, Laravel trên PHP 8. 0 có thể chạy 8. Nhiều hơn 5% yêu cầu mỗi giây so với PHP 7. 3.

Phiên bản PHP nào ổn định?

PHP8. 3 là nhánh phát triển tích cực của các phiên bản PHP. Đó là mục tiêu hiện tại cho các RFC mới và dự kiến ​​sẽ được phát hành vào cuối năm 2023

Phiên bản PHP nào nhanh nhất?

PHP 8. 0 và 8. 1 đã được chứng minh là nhanh hơn trên toàn diện khi nói đến WordPress, WooC Commerce và Tải xuống kỹ thuật số dễ dàng. Nếu bạn đang sử dụng WordPress để chạy bất kỳ trang web nào của mình, bạn nên lên kế hoạch chuyển sang PHP 8. 0 trở lên càng sớm càng tốt.

Cách cài đặt PHP 7. 3 trên Windows 10?

Trước hết tải xuống Phiên bản PHP mà bạn muốn cài đặt . Trong trường hợp của tôi, nó sẽ là PHP 7. Phiên bản an toàn chủ đề 3 x64. Đây là liên kết đến phần tải xuống trên php. mạng lưới. https. //các cửa sổ. php. mạng/tải xuống#php-7. 3 Trong trường hợp của tôi, tôi đã tải xuống tệp ZIP của VC15 x64 Thread Safe (2020-27 tháng 10 16. 52. 12).