2013-07-01 57 views
5

Tôi muốn biết nếu có cách kết hợp nhanh hơn 2 tệp văn bản trong PHP, cách mở thông thường txt1 trong a+, đọc txt2 từng dòng và sao chép từng dòng đến txt1.Kết hợp các tệp trong PHP

+0

bạn có thể sử dụng exec để nối các file trong Unix. – karmafunk

+0

Bạn sao chép từng dòng vào txt1 như thế nào? – sroes

+1

Bạn có thể sử dụng 'file_get_contents' để lấy toàn bộ tập tin cùng một lúc. –

Trả lời

7

Nếu bạn muốn sử dụng một giải pháp thuần PHP, bạn có thể sử dụng file_get_contents để đọc toàn bộ tập tin trong một chuỗi và sau đó viết rằng ra (không kiểm tra lỗi, chỉ để cho thấy cách bạn có thể làm điều đó):

$fp1 = fopen("txt1", 'a+'); 
$file2 = file_get_contents("txt2"); 
fwrite($fp1, $file2); 
+0

Tốt nếu bạn có nhiều bộ nhớ và tệp của bạn không quá lớn. – scott80109

10

Đây có thể là nhanh hơn nhiều để sử dụng chương trình cat trong linux nếu bạn có quyền dòng lệnh cho PHP

system('cat txt1 txt2 > txt3'); 
+0

'mèo' không được nhận dạng dưới dạng lệnh nội bộ hoặc bên ngoài, chương trình hoạt động một cấp hoặc tệp lô. (Appserv trên windows 7. Phiên bản PHP 5.2.6) – Guttemberg

+0

@Guttemberg xin lỗi, tôi đã giả định rằng điều này đã được chạy trên một máy chủ * nix – Patrick

+0

Tôi đã tìm thấy 'cat' là nhanh (chậm!) Như 'file_get/Blackfire' của Blackfire câu trả lời của put_contents' cho ~ 400 tệp ~ 1 MB. Nhược điểm của 'cat' là bạn không thể thực hiện một thanh tiến trình. – Rudie

6
$content = file_get_contents("file1"); 
file_put_contents("file2", $content, FILE_APPEND); 
Các vấn đề liên quan