Swoole IO異步讀取文件與寫入文件

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. 參數1爲文件的名稱,必須有可寫權限,文件不存在會自動創建。打開文件失敗會立即返回false
  2. 參數2爲要寫入到文件的內容,最大可寫入4M
  3. 參數3爲寫入成功後的回調函數,可選
  4. 參數4爲寫入的選項,可以使用FILE_APPEND表示追加到文件末尾
  5. 如果文件已存在,底層會覆蓋舊的文件內容

可應用於日誌的寫入

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章