有兩個檔案檔案,大小都超過了1g,一行一條資料,每行資料不超過500位元組,兩檔案中有一部分內容是完全相同的,請寫**找到相同的行,並寫到新檔案中。php最大允許內內為256m。
遇到此問題,首先先嘗試從小範圍解決,比如題目中,要求查詢兩個檔案相同的行,那麼我們可以先讀取檔案到記憶體中(陣列),然後通過array_intersect()函式獲取兩個陣列的交集,即為相同的行,此時,小範圍的問題已經找到解決方法了。
再回到問題本身,兩個檔案都超過1g,php最大使用記憶體是256m(也有可能是128m,甚至10m,這不用擔心),在此條件下,直接讀取檔案到記憶體,顯然不可行,我們可以考慮使用split命令將其分割成若干個小檔案,再運用上面的思路逐個對比小檔案,得到的結果,再合併到結果集裡面,然後再去重,即得到題目要求。
<?php
function build_file($max)
{ $file1 = fopen("/tmp/file1.txt", "w");
$file2 = fopen("/tmp/file2.txt", "w");
for($i =0; $i < $max; $i++) {
$text1 = md5(microtime() . rand(100, 999))
PHP內建的兩個錯誤處理函式
set error handler 函式設定使用者自定義的錯誤處理函式。該函式用於建立執行時期間的使用者自己的錯誤處理方法。該函式會返回舊的錯誤處理程式,若失敗,則返回 null。set error handler error function,error types 引數 描述error func...
Linux處理求兩個檔案交集 差集
兩個檔案,如 root localhost grep cat 1.txtab cadaa bbaa root localhost grep cat 2 txtab cbbfsx分析,檔案1.txt和檔案2.txt 1.txt 2.txt a d aa aa 2.txt 1.txt fsx1.txt ...
PHP兩個檔案的相對路徑
1 2 relativepath 計算兩個檔案的相對路徑 3 param file1 參作為考路徑 4 param file2 相對於 file1的路徑5 6function relativepath file1,file2 18 19 path implode adifftob 20 implod...