本文主要和大家分享php檔案基本操作實例,希望能幫助大家,首先我們先和大家分享php讀寫基本操作。
讀取與寫入基本操作
#寫入檔案函數:file_put_contents()
-
FILE_USE_INCLUDE_PATH : 將檢查filename 副本的內建路徑
LOCK_EX : 將鎖定檔案
#FILE_APPEND : 將移至檔案末端。否則,將會清除檔案的內容
-
語法:
int file_put_contents(file,data,mode,context)
#參數 描述 #file 必要。規定要寫入資料的文件。如果文件不存在,則建立一個新文件。 data 可選。規定要寫入文件的資料。可以是字串、一維數組或資料流。 mode 可選。如何開啟/寫入檔案。可能值:FILE_USE_INCLUDE_PATH 、 FILE_APPEND 、 LOCK_EX context 可選。規定文件句柄的環境。 context 是一套可以修改流的行為的選項。若使用 null,則忽略。 傳回值:函數將傳回寫入到檔案內資料的位元組數。
mode參數說明
與依序呼叫 fopen(),fwrite() 以及 fclose() 函數一樣。
讀取檔案函數:file_get_contents()
-
#語法:
string file_put_contents (path,include_path,context,start,max_length)
參數 ##描述必要。規定要讀取的文件。可以是外部url include_path 可選。如果也想在 include_path 中搜尋檔案的話,可以將該參數設為 “1”。 context 可選。規定文件句柄的環境。 start 可選。規定在文件中開始讀取的位置。此參數是 PHP 5.1 新加的。 max_length 可選。規定讀取的位元組數。此參數是 PHP 5.1 新加的。 傳回值:讀取到的字串。
其它常用檔案函數
#Unlink() 刪除檔案
Rename( ) 檔案移動(重新命名)
Filesize() 檔案大小
File_exists() 檔案是否存在
-
#Filemtime() 檔案的最後修改時間!
檔案句柄讀取寫入操作
大多數的檔案讀寫,使用函數:File_put_contents, file_get_contents完成。
少數,特別情況,以上兩個函數不好用。
典型的就是,文件過大!只能一部分一部分的操作!
基本單位都是位元組:
-
fopen() 函數開啟檔案或 URL。
如果開啟失敗,本函數傳回 FALSE。
開啟檔案句柄,PHP程式與檔案間資料通路!
需要 檔案位址 和 開啟模式 兩個參數!開啟模式:指定開啟該檔案後,需要執行什麼動作!如下的模式可以選擇:
r: read, 讀取模式。
w: write, 寫入操作,清空寫入。
a: append,寫入操作,追加寫。
x: 新寫入,只能新建檔案操作!就是寫入操作,與w類似
-
+擴充模式:擴充的操作,都可以完成讀寫操作。
<?php $handle = fopen('./data.txt','r'); var_dump($handle); // resoure(3) of type (stream) 得到一个资源类型 ?>
檔案句柄讀取函數fread(),fgetc(),fgets(),feof();
一個字節資料= fgetc(句柄); //多字節字元情況下亂碼
每當讀取到一個字節,將檔案指標向前移動一個位元組!句柄操作中,依賴的就是 檔案指標!字串 = fgets(句柄, 長度)
如果在讀取時,先讀到了換行符,也會終止。也叫讀行函數!典型的邏輯,每行記錄一組信息,該函數最常用!-
feof()判斷是否達到檔案結尾
讀取檔案全部資訊範例:<?php $handle = fopen('./langref.txt','r'); while (! feof($handle)) { $line = fgets($handle,1024); echo $line . "</br>"; } ?>
字串= fread(handle,長度)
依據長度讀取內容,與fgets區別,不受換行符的限制
唯一一個限制為:最大的長度不能超過8192!檔案句柄寫函數fwrite($handle,內容)
關閉句柄fclose($handle)
指標運算子
fseek(句柄, 位置),定位設定指針,位置從0開始,遞增!
ftell(句柄),取得指標位置!
檔案並發操作(檔案鎖定)
#預設的,PHP的檔案操作函數,不是阻塞狀態。自由操作狀態。所以並發操作文件的時候容易導致出錯,當需要,一個腳本操作而需要阻塞另外的腳本操作時,就需要用到文件鎖。
鎖定操作流程:
先加鎖,偵測鎖定是否加成功,如果成功再使用!
鎖定類型:
#讀取鎖定: s-lock(share-lock)共享鎖定,讀取操作前,期望增加的鎖定。導致,允許並發讀,阻塞額外的寫入操作。
寫入鎖定: x-lock(exclusive-lock)排他鎖,獨佔鎖,寫入作業前,嘗試新增的鎖定型別。導致,其他腳本不能讀也不能寫。
意向鎖定:所有的操作資源的腳本都遵循一個約定來使用檔案鎖定(約定)。
flock($handle,鎖定類型);
類型:
LOCK_SH 讀取鎖定
#LOCK_EX 寫鎖
-
LOCK_UN 解鎖
<?php //*********脚本1,想要读取文件信息*********** //尝试加读锁 $lock_result= flock($handle, LOCK_SH); //判断锁定结果 if(!$lock_result){ die('锁定失败,不能操作文件'); } //文件操作 $str = fgets($handle, 1024); var_dump($str); sleep(5); echo '<br>'; $str = fgets($handle, 1024); var_dump($str); flock($handle, LOCK_UN);//解锁 ?> <?php //*********脚本2,想要往文件里写入信息*********** //尝试加写锁 $lock_result= flock($handle, LOCK_EX); //判断锁定结果 if(!$lock_result){ die('锁定失败,不能操作文件'); } //文件操作 $result = fwrite($handle, '123456'); flock($handle, LOCK_UN);//解锁 ?>
同事執行的情況下,上述腳本2需要等待(被阻塞狀態)腳本1執行完成才會執行,強調,一定要判斷鎖是否添加成功
可以透過LOCK_NB來在鎖定失敗時,不阻塞:
$lock_result = flock($handle, LOCK_EX | LOCK_NB);
解鎖:
Flock($handle, LOCK_UN)來強制解鎖,
Fclose()自動解鎖!
相關推薦:
以上是php檔案基本操作實例分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

使用數據庫存儲會話的主要優勢包括持久性、可擴展性和安全性。 1.持久性:即使服務器重啟,會話數據也能保持不變。 2.可擴展性:適用於分佈式系統,確保會話數據在多服務器間同步。 3.安全性:數據庫提供加密存儲,保護敏感信息。

在PHP中實現自定義會話處理可以通過實現SessionHandlerInterface接口來完成。具體步驟包括:1)創建實現SessionHandlerInterface的類,如CustomSessionHandler;2)重寫接口中的方法(如open,close,read,write,destroy,gc)來定義會話數據的生命週期和存儲方式;3)在PHP腳本中註冊自定義會話處理器並啟動會話。這樣可以將數據存儲在MySQL、Redis等介質中,提升性能、安全性和可擴展性。

SessionID是網絡應用程序中用來跟踪用戶會話狀態的機制。 1.它是一個隨機生成的字符串,用於在用戶與服務器之間的多次交互中保持用戶的身份信息。 2.服務器生成並通過cookie或URL參數發送給客戶端,幫助在用戶的多次請求中識別和關聯這些請求。 3.生成通常使用隨機算法保證唯一性和不可預測性。 4.在實際開發中,可以使用內存數據庫如Redis來存儲session數據,提升性能和安全性。

在無狀態環境如API中管理會話可以通過使用JWT或cookies來實現。 1.JWT適合無狀態和可擴展性,但大數據時體積大。 2.Cookies更傳統且易實現,但需謹慎配置以確保安全性。

要保護應用免受與會話相關的XSS攻擊,需採取以下措施:1.設置HttpOnly和Secure標誌保護會話cookie。 2.對所有用戶輸入進行輸出編碼。 3.實施內容安全策略(CSP)限制腳本來源。通過這些策略,可以有效防護會話相關的XSS攻擊,確保用戶數據安全。

优化PHP会话性能的方法包括:1.延迟会话启动,2.使用数据库存储会话,3.压缩会话数据,4.管理会话生命周期,5.实现会话共享。这些策略能显著提升应用在高并发环境下的效率。

theSession.gc_maxlifetimesettinginphpdeterminesthelifespanofsessiondata,setInSeconds.1)它'sconfiguredinphp.iniorviaini_set().2)abalanceisesneededeededeedeedeededto toavoidperformance andunununununexpectedLogOgouts.3)

在PHP中,可以使用session_name()函數配置會話名稱。具體步驟如下:1.使用session_name()函數設置會話名稱,例如session_name("my_session")。 2.在設置會話名稱後,調用session_start()啟動會話。配置會話名稱可以避免多應用間的會話數據衝突,並增強安全性,但需注意會話名稱的唯一性、安全性、長度和設置時機。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

禪工作室 13.0.1
強大的PHP整合開發環境

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SublimeText3漢化版
中文版,非常好用

Atom編輯器mac版下載
最受歡迎的的開源編輯器