PHP中字串長度的上限是多少?
查詢:
你能解釋一下嗎PHP中字串儲存容量的限制?我嘗試對其進行測量,但不確定我的系統記憶體 (2GB) 是否足以進行測試。是否有預定上限?當字串超過此閾值時會發生什麼操作 - 連接還是錯誤?
回應:
根據 PHP.net 的文檔,PHP 7.0.0 中已消除字串長度限制對於 64 位元版本。對於 32 位元版本和早期版本,字串的最大大小可達 2GB(2147483647 位元組)。
在 PHP 5.x 中,字串被限制為 231-1 位元組,因為內部程式碼以 32 位元有符號整數追蹤它們的長度。
附加註意事項:
您可以使用 file_get_contents() 等函數載入整個檔案的內容。然而,PHP 腳本對所有變數的總體記憶體分配限制了各個字串變數的長度。
記憶體限制指令:
php.ini 設定檔中的 memory_limit 指令設定了此值限制。 PHP 5.2 預設為 128MB,早期版本為 8MB。
如果php.ini 中未設定memory_limit,則預設為PHP 二進位檔案中的編譯值,可以透過使用自訂預設值重新編譯PHP 來修改該值.
在php. ini 中將memory_limit 設定為-1會停用檢查並允許您的腳本利用作業系統分配的記憶體(仍受實際情況和
測試範例:
以下程式碼示範如何測試記憶體使用和字串分配限制:
// Limit memory usage to 1MB
ini_set('memory_limit', 1024*1024);
// Basic operation uses about 768KB
printf("memory: %d\n", memory_get_usage(true));
$str = str_repeat('a', 255*1024);
echo "Allocated string of 255KB\n";
// All 1MB of memory has been allocated
printf("memory: %d\n", memory_get_usage(true));
// Exceeding the limit causes a fatal error
$str = str_repeat('a', 256*1024);
echo "Allocated string of 256KB\n";
printf("memory: %d\n", memory_get_usage(true));
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3