Làm cách nào để ghi đè lên một tệp trong PHP?

Hàm file_put_contents[] của PHP là một lối tắt hữu ích để kết xuất một chuỗi vào một tệp [so với việc sử dụng fopen, fputs, v.v.]. Theo mặc định, nó sẽ tạo một tệp mới nếu nó không tồn tại hoặc ghi đè lên tệp nếu nó tồn tại. Gần đây, tôi đã đọc lại tài liệu về chức năng này và phát hiện ra rằng cũng có thể nối thêm vào một tệp có file_put_contents

Ghi vào một tệp mới/ghi đè lên một tệp hiện có

Truyền tên tệp và chuỗi để ghi vào tệp [cũng có thể truyền một mảng chứa luồng nhưng điều đó nằm ngoài phạm vi của bài đăng này] và một tệp mới sẽ được tạo chứa nội dung của chuỗi hoặc một tệp hiện có sẽ được tạo

file_put_contents['/path/to/filename', $data];

Lưu ý rằng thư mục bạn muốn ghi tệp phải tồn tại và có thể ghi được khi người dùng tập lệnh đang chạy dưới dạng. Nếu ghi đè lên một tệp hiện có thì tệp đó phải có thể ghi được vì người dùng đang chạy tập lệnh dưới dạng

Nối vào một tập tin hiện có

Như tôi đã phát hiện ra gần đây, cũng có thể nối thêm vào một tệp hiện có bằng file_put_contents. Hàm có thể nhận tham số thứ ba chứa danh sách các cờ được nối với toán tử OR nhị phân

Để thêm vào một tệp, hãy chuyển cờ FILE_APPEND như vậy

file_put_contents['/path/to/filename', $data, FILE_APPEND];

Khi ghi đè lên một tệp hiện có, tệp phải có thể ghi được khi người dùng tập lệnh đang chạy dưới dạng

Đôi khi, ngay cả Ctrl-F5 cũng không thực hiện được mẹo. Tuy nhiên, bạn có thể đánh lừa bộ đệm nghĩ rằng chúng đang nhận được thứ gì đó khác bằng cách thêm một tham số vào cuối URL. Miễn là nó được gắn nhãn là thứ mà máy chủ không tìm kiếm, thì máy chủ [trong trường hợp này là Moodle] sẽ không nhận thấy sự khác biệt, nhưng bộ đệm sẽ nghĩ rằng chúng PHẢI quay lại máy chủ để lấy phiên bản mới

Nếu đã có một số tham số, hãy thêm tham số mới sau dấu & [thường có]. Nếu không, bạn cần thêm dấu ?

e. g, trang này là

http. // tâm trạng. org/mod/diễn đàn/thảo luận. php?d=33376

Để buộc làm mới, bạn có thể gửi, nói

http. // tâm trạng. org/mod/diễn đàn/thảo luận. php?d=33376&sadfsdgsddg=dasfdzfzd hoặc bất kỳ thứ rác rưởi nào khác

RẤT hơi rủi ro, nhưng nó giải quyết được vấn đề

Trung bình của xếp hạng. Hữu ích [1]

Trả lời Chris Jeffries

Lại. ghi đè lên các tập tin tài nguyên

bởi Helen Foster - Thứ Sáu, ngày 18 tháng 11 năm 2005, 9. 35 giờ chiều

Cảm ơn Chris - một thủ thuật hữu ích.  

Trung bình của xếp hạng. -

Trả lời Terri Bateman

Lại. ghi đè lên các tập tin tài nguyên

bởi Steve Petersen - Thứ Tư, ngày 21 tháng 9 năm 2005, 4. 40 giờ sáng

Tôi cũng gặp khó khăn này--Tôi đã thử bắt buộc làm mới nhưng chúng không hiệu quả. Tôi nghi ngờ vấn đề là Moodle khăng khăng tải các tài nguyên như vậy trong một khung riêng biệt và khung đó không được làm mới mặc dù toàn bộ "trang" đều có [sử dụng Firefox trên linux]. Chỉ xóa bộ nhớ cache dường như hoạt động.

Tôi tự hỏi có cách nào dễ dàng để làm mới khung hình không? .

Thanks!
Steve

Trung bình của xếp hạng. -

Trả lời Steve Petersen

Lại. ghi đè lên các tập tin tài nguyên

bởi Helen Foster - Thứ Tư, ngày 21 tháng 9 năm 2005, 6. 35 giờ sáng

Hmm, tôi đã nghĩ rằng việc bắt buộc làm mới sẽ tải lại nội dung khung [có lẽ ngoại trừ trong IE 

]. Nếu không, nội dung khung có thể được làm mới bằng cách nhấp chuột phải vào khung và chọn tải lại khung.

Xin lưu ý rằng các tài nguyên không nhất thiết phải được đưa vào một khung riêng. Vui lòng kiểm tra cài đặt cửa sổ trên trang tài nguyên chỉnh sửa.

Trung bình của xếp hạng. -

Trả lời Helen Foster

Lại. ghi đè lên các tập tin tài nguyên

bởi Steve Petersen - Thứ Tư, ngày 21 tháng 9 năm 2005, 8. 25 giờ sáng

Cảm ơn vì đã trả lời nhanh chóng.

Trước đây, tôi đã thử nhấp chuột phải và làm mới trong khung nhưng không được. Nhưng một cái gì đó đã hoạt động--thật khó để nói điều gì, vì tôi đang thử nghiệm nhanh chóng cho thời hạn, nhưng có vẻ như nó đang xóa bộ nhớ cache. Có thể, như đã nói ở trên, hệ thống chỉ "bắt kịp". Mặc dù điều đó không hoạt động với một tài nguyên khác được cho là đã bị ghi đè trong nhiều ngày nhưng vẫn hiển thị phiên bản cũ. hừm.

Ngoài ra, trong trang "tài nguyên chỉnh sửa", tôi không thấy tùy chọn không có khung. Tôi chỉ thấy một số tùy chọn bật lên. Tôi có thể có một phiên bản bất thường trên trang web, mặc dù.

Một lần nữa cảm ơn bạn đã kiên nhẫn trả lời các câu hỏi của tôi.
Steve

Trung bình của xếp hạng. -

Trả lời Steve Petersen

Lại. ghi đè lên các tập tin tài nguyên

bởi Helen Foster - Thứ Năm, ngày 22 tháng 9 năm 2005, 4. 47 giờ sáng

Xin chào Steve,

Tôi cũng thỉnh thoảng gặp sự cố làm mới. Một giải pháp khả thi là kiểm tra với một người bạn chưa xem tài nguyên của bạn.

Lại. tùy chọn không có khung, vui lòng đảm bảo hộp "Đặt tài nguyên vào khung để hiển thị điều hướng trang web" không được chọn.

Trung bình của xếp hạng. -

Trả lời Helen Foster

Lại. ghi đè lên các tập tin tài nguyên

bởi Heather P - Thứ Năm, ngày 17 tháng 11 năm 2005, 8. 06 giờ chiều

Chúng tôi cũng gặp sự cố làm mới và buộc phải kiểm tra trên một máy tính khác để đảm bảo các thay đổi đã được thực hiện.
Có ai biết bộ đệm sẽ tồn tại bao lâu trước khi quá trình làm mới có hiệu lực không? . Nó dường như không quan trọng nếu đó là ctrl + F5, cho dù đó là Firefox hay IE cho dù nó có trong khung hay chỉ cần nhấp vào tài nguyên trong phần Tệp. Bạn thậm chí có thể đóng tất cả các phiên bản của trình duyệt xuống và mở lại và chúng tôi vẫn nhận được trang sai. Điều này không lý tưởng đối với một số gia sư CNTT mới của tôi, những người đang bị bối rối bởi tất cả.
Chhers


Trung bình của xếp hạng. -

Trả lời Heather P

Lại. ghi đè lên các tập tin tài nguyên

bởi Jamie Smith - Thứ Sáu, ngày 18 tháng 11 năm 2005, 4. 08 giờ sáng

Thử cái này

trong tập tin của bạn. php trong thư mục gốc của Moodle, hãy chỉnh sửa dòng tệp trong đó chỉ định thời gian tệp được lưu trong bộ đệm. Đó là dòng 13

Mặc định được đặt thành 24 giờ [tính bằng giây]

Tôi đặt của tôi là 0, đóng trình duyệt, thay đổi tệp và kiểm tra. Mỗi khi tôi thay đổi tệp, thay đổi đó được phản ánh

Vấn đề được giải quyết.  

Tôi hy vọng nó hoạt động cho phần còn lại của bạn

Trung bình của xếp hạng. -

Trả lời Jamie Smith

Lại. ghi đè lên các tập tin tài nguyên

bởi Jamie Smith - Thứ Sáu, ngày 18 tháng 11 năm 2005, 5. 24 giờ sáng

Về giải pháp trước đó, hãy thận trọng

Gần đây tôi đã được chủ nhà giàu kinh nghiệm hơn của mình cho biết rằng điều này có thể gây ra tải quá mức trên máy chủ của bạn tùy thuộc vào số lượng người dùng đồng thời

Mặt khác, một giải pháp khả thi khác mà tôi đã tìm thấy là đặt tệp của bạn ở một vị trí khác với thư mục trong thư mục dữ liệu Moodle

Tôi giữ các tệp được cập nhật trong một thư mục được tạo qua FTP ở một vị trí bên ngoài thư mục cài đặt Moodle. Sau đó, tôi trỏ tới các tệp này bằng cách sử dụng vị trí URL đầy đủ. Điều này bỏ qua các tập tin. sử dụng php và dường như cung cấp một giải pháp. Tuy nhiên, điều này có thể không an toàn hoặc thuận tiện vì không phải tất cả người dùng/nhà phát triển đều có quyền truy cập FTP đầy đủ

Chúc may mắn

Trung bình của xếp hạng. -

Trả lời Heather P

Lại. ghi đè lên các tập tin tài nguyên

bởi Chris Lamb - Thứ Sáu, ngày 18 tháng 11 năm 2005, 5. 39 giờ chiều

Chào Heather

Việc bạn nhận được phiên bản mới nhất nếu bạn dùng thử một máy khác cho thấy rằng đó là bộ đệm trên máy đang chứa phiên bản cũ - nếu đó là bộ đệm được giữ trên máy chủ proxy của tổ chức của bạn thì tôi đã nghĩ rằng tất cả các máy trong tổ chức của bạn

Bạn đã thử thay đổi cài đặt bộ đệm trong trình duyệt của mình chưa? . ]  Bạn có thể thay đổi tần suất trình duyệt kiểm tra phiên bản mới của các trang được lưu trữ. Ngoài ra, hãy thử xóa bộ đệm [Công cụ >> Tùy chọn Internet >> nút Xóa tệp. ]

Hi vọng điêu nay co ich

Chris

Trung bình của xếp hạng. -

Trả lời Chris Lamb

Lại. ghi đè lên các tập tin tài nguyên

bởi Heather P - Thứ sáu, ngày 18 tháng 11 năm 2005, 9. 53 giờ chiều

Chào bạn

chúng tôi không có máy chủ proxy và tôi đã đặt cài đặt bộ đệm trong IE để làm mới mỗi lần truy cập trang. Có lẽ IE đã thực sự phá vỡ cài đặt đó và việc tôi làm gì với nó thực sự không quan trọng. Có lẽ tôi cần kiểm tra trang web của Microsoft để xem liệu họ có vấn đề chứ không phải chúng tôi không.
Tôi sẽ thử kết xuất toàn bộ bộ nhớ cache vào lần tới khi tôi gặp sự cố này và xem cách đó có khắc phục được không

Cảm ơn nhiều

cây thạch nam

Trung bình của xếp hạng. -

Trả lời Heather P

Lại. ghi đè lên các tập tin tài nguyên

bởi David Brighton - Thứ Năm, ngày 22 tháng 12 năm 2005, 12. 07 giờ sáng

Có ai có một câu trả lời cho điều này? . htaccess, đặt lại cài đặt bộ đệm của trình duyệt và đó vẫn là sự cố. Ngay cả khi nó xuất hiện ở đây, nếu bạn cập nhật ảnh hồ sơ của mình, nó sẽ không xuất hiện cho đến khi bạn làm mới trang. Tôi đã thử đặt lại tập tin. cài đặt bộ đệm php, nhưng điều đó cũng không hoạt động. Cũng đã thử thêm thẻ meta vào tiêu đề của trang để không có bộ đệm. Đó là một vấn đề trong IE và Firefox. Đối với tôi thì không sao, nhưng bây giờ tôi bắt đầu bị giáo viên và học sinh nói với tôi rằng có lỗi trong tâm trạng

Có lời khuyên nào không?

Trung bình của xếp hạng. -

Trả lời David Brighton

Lại. ghi đè lên các tập tin tài nguyên

bởi Keith Allpress - Thứ Năm, ngày 22 tháng 12 năm 2005, 7. 13 giờ sáng

Caching thực sự là một điều khá đơn giản, nhưng rất ít người dành thời gian để hiểu đúng về nó.
 
Bộ nhớ đệm là tùy chọn, đây là những nơi lưu trữ bản sao, ý tưởng chủ yếu là để tiết kiệm băng thông. Vì vậy, chúng có thể nằm trên máy khách [bộ đệm của trình duyệt] và/hoặc trong máy chủ proxy của tổ chức bạn hoặc bộ đệm ngược dòng. Đối với sinh viên ở nhà, họ sẽ thực hiện các yêu cầu thông qua một ISP, người cũng có động cơ không trả tiền cho băng thông nếu họ không phải làm vậy. Học sinh thực sự là một phần của mạng LAN của ISP, do đó, proxy của ISP có thể phục vụ tốt tệp từ bản ghi url của nó trong bộ đệm của chính nó.

Bản thân máy chủ web có thể lưu vào bộ đệm và cuối cùng, ứng dụng có thể duy trì hệ thống bộ đệm của chính nó. Tất cả vì hiệu quả và tiết kiệm chi phí. Vì vậy, yêu cầu bạn đưa ra có thể không bao giờ đến được hết máy chủ, có bất kỳ số lượng cửa hàng nào trên đường đi lên có thể quyết định cung cấp tệp cho bạn thay thế.

Vậy sửa đổi Moodle? .

Bây giờ bất kỳ ứng dụng hợp lý nào trên máy chủ cũng có động lực để không bị làm phiền trong tương lai. Các ứng dụng máy chủ web có động lực để tiết kiệm băng thông, về cơ bản, chúng không muốn yêu cầu lại điều tương tự trong tương lai, cho cùng một máy khách. Vì vậy, họ cố gắng ngăn cản các yêu cầu được thực hiện lại cho cùng một thứ. Họ thực hiện điều này bằng cách đưa ra "tiêu đề phản hồi" cùng với phản hồi của họ, nhằm mục đích được lắng nghe bởi bất kỳ hệ thống lưu trữ nào mà phản hồi có thể gặp phải trên hành trình tới người dùng. Tất cả chăm sóc không có trách nhiệm.

Không có gì đảm bảo rằng bộ đệm sẽ lắng nghe chính xác bất kỳ tiêu đề nào, nhưng nhìn chung chúng hoạt động khá tốt. Các tiêu đề thường được truyền vào và bạn có thể 'nghe" các tiêu đề bộ đệm khi chúng đến máy khách của bạn. Một cách dễ dàng [và mang tính giáo dục] để làm điều đó là cài đặt Firefox hoặc thanh công cụ dành cho nhà phát triển IE trên trình duyệt của bạn và bạn có thể thấy mọi thứ về trang web rất dễ dàng. [Ngẫu nhiên, không ích gì khi gửi thẻ meta HTML để cố gắng tác động đến các máy chủ bộ nhớ đệm trung gian như máy chủ proxy, vì chúng không xem xét nội dung HTML. Các thẻ được hiển thị trong trình duyệt, vì vậy bạn có thể quản lý để khiến điều đó thực hiện điều gì đó. ]

Mọi bộ nhớ cache lưu giữ [được cung cấp] thông tin về một tệp được lưu trong bộ nhớ cache được gọi là "độ mới" của nó. Miễn là bộ đệm cho rằng một tệp là "mới", nó sẽ chặn bất kỳ yêu cầu nào từ máy khách và tự phục vụ tệp đó, đồng thời đảm bảo rằng yêu cầu đó không bao giờ được chuyển đến "máy chủ gốc". Bây giờ bạn có thể thấy một vấn đề? . Mọi thứ phải được yêu cầu, bạn không thể "đẩy" từ máy chủ web mà không có yêu cầu ngay từ đầu. bắt 22.

Vì vậy, những người trình duyệt đã phát minh ra tín hiệu [làm mới bắt buộc] để cố gắng kích hoạt máy chủ bộ đệm làm mới từ phía máy khách. Hoặc có thể sử dụng các mánh khóe bẩn thỉu, chẳng hạn như OK nếu url đó lỗi thời, tôi sẽ thay đổi url của tài nguyên bằng cách thêm một cái gì đó vào cuối url đó và bỏ qua toàn bộ vấn đề. Đó là những tiêu đề mà máy chủ đã ban hành ở nơi đầu tiên là vấn đề.

Vì vậy, chúng tôi phải thực sự cẩn thận với những tiêu đề mà chúng tôi đưa ra ngay từ đầu, khi thông báo cho bộ nhớ cache cách chúng sẽ hành xử đối với một tệp mà chúng tôi đang phục vụ lần đầu tiên.

Kẻ vi phạm tồi tệ nhất là tiêu đề được gọi là tiêu đề "Hết hạn". Điều này đặt độ tươi duy trì cho đến khi đạt đến ngày hết hạn. Đây là một tiêu đề rất nguy hiểm để phát hành nếu có bất kỳ khả năng nào mà một tệp trên thực tế sẽ thay đổi nội dung của nó vào một thời điểm nào đó trong tương lai trong ngày đó. Tôi nghĩ rằng đây có thể là vấn đề đang phải đối mặt ở đây? . Giảm tùy chọn này nếu bạn lo lắng

Moodle has a config setting

// Seconds for files to remain in caches. Decrease this if you are worried
// về việc học sinh được cung cấp các phiên bản tệp đã tải lên đã lỗi thời.
//     $CFG->filelifetime = 86400;

Tôi không chắc liệu bạn có thể kiểm soát tệp cài đặt này theo từng tệp hay không vì tôi không biết Moodle điều đó . Ngoài ra còn có các cách khác để kiểm soát bộ đệm, vì vậy có thể Moodle sẽ thay đổi cách tiếp cận của nó trong tương lai?

My 5c
Keith.



 



































 







Trung bình của xếp hạng. Hữu ích [1]

Trả lời Keith Allpress

Lại. ghi đè lên các tập tin tài nguyên

bởi David Brighton - Thứ Năm, ngày 22 tháng 12 năm 2005, 6. 21 giờ đêm

Cảm ơn Keith đã trả lời toàn diện của bạn

Trích dẫn. Bạn đang cố gắng đạt được điều gì?

Tôi muốn mọi người ngừng gọi cho tôi để nói với tôi rằng có lỗi và tài nguyên/hình ảnh cá nhân của họ, v.v. không được cập nhật trên moodle. Tôi liên tục nói với họ về những lợi ích của việc có thể cập nhật tài nguyên ngay lập tức cho học viên, vì vậy bạn có thể hiểu tại sao họ cảm thấy thất vọng. Tôi đã có một lần thử vào thời gian tập tin vào lúc này và điều đó dường như đang hoạt động cho đến bây giờ

Làm cách nào để ghi đè lên một tệp trong PHP?

Làm cách nào để ghi đè nội dung tệp bằng nội dung mới trong PHP? . 'w+'-> Mở để đọc và viết; . 'w' -> Open for writing only; place the file pointer at the beginning of the file and truncate the file to zero length. 'w+'-> Open for reading and writing; place the file pointer at the beginning of the file and truncate the file to zero length.

Làm cách nào để ghi đè lên tệp csv trong PHP?

xóa bảng .
ẩn nội dung của employee_data. .
phát nổ nội dung của chuỗi thành một mảng
Xóa nhân viên. dữ liệu. csv
Tạo một employee_data mới. .
Viết nội dung của mảng vào employee_data mới. tệp csv

Ghi đè tập tin hiện có là gì?

Ghi đè là quá trình thay thế dữ liệu cũ bằng dữ liệu mới . Nó liên quan đến việc thay đổi dữ liệu được viết trước trong một tệp. Ghi đè tệp có thể hiểu là xóa tệp hiện có và thay bằng tệp mới có cùng tên.

Làm cách nào để nối thêm một tệp trong PHP?

Bạn có thể nối thêm dữ liệu vào tệp bằng cách sử dụng chế độ a hoặc a+ trong hàm fopen[]. Hãy xem một ví dụ đơn giản nối dữ liệu vào dữ liệu. tập tin txt. .

Chủ Đề