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 會停用檢查,並允許您的腳本利用作業系統分配的記憶體(仍受到實際和系統特定的限制)。
測試範例:
以下程式碼示範如何測試記憶體使用情況和字串分配限制:
<code class="php">// 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));</code>
以上是PHP 中的字串可以有多大?的詳細內容。更多資訊請關注PHP中文網其他相關文章!