Swoole IO異步讀取文件與寫入文件 持續更新
簡單IO異步讀取文件 實現
read.php
<?php
/**
* Created by PhpStorm.
* User: dom
* Date: 19-2-21
* Time: 下午2:55
*/
/**
* 讀取文件 最高4M大小的文件
*/
swoole_async_readfile(__DIR__."/data.txt",function ($fileName,$fileContent){
echo "fileName:{$fileName}".PHP_EOL;
echo "fileContent:".PHP_EOL.$fileContent.PHP_EOL;
});
echo "看看我是先輸出還是後輸出";
swoole_async_readfile最大可讀取4M的文件,受限於SW_AIO_MAX_FILESIZE宏
如果要讀取大文件,可以考慮使用以下函數
swoole_async_read(string $filename, mixed $callback, int $size = 8192, int $offset = 0);
此函數與swoole_async_readfile不同,它是分段讀取,可以用於讀取超大文件。每次只讀$size個字節,不會佔用太多內存。
簡單IO異步寫入文件 實現
write.php
<?php
/**
* Created by PhpStorm.
* User: dom
* Date: 19-2-21
* Time: 下午3:10
*/
$content = time().PHP_EOL;
swoole_async_writefile(__DIR__."/data.log",$content,function ($fileName){
echo "追加寫入成功!";
},FILE_APPEND);
echo "看看我是先輸出還是後輸出";
- 參數1爲文件的名稱,必須有可寫權限,文件不存在會自動創建。打開文件失敗會立即返回false
- 參數2爲要寫入到文件的內容,最大可寫入4M
- 參數3爲寫入成功後的回調函數,可選
- 參數4爲寫入的選項,可以使用FILE_APPEND表示追加到文件末尾
- 如果文件已存在,底層會覆蓋舊的文件內容
可應用於日誌的寫入