查詢

Swoole\Async::read()函式—用法及示例

「 非同步讀取檔案內容或網路資料 」


函式名稱:Swoole\Async::read()

適用版本:Swoole 4.4.0 版本及以上

函式描述:Swoole\Async::read() 函式用於非同步讀取檔案內容或網路資料。

用法:

Swoole\Async::read(string $filename, callable $callback, int $size = 8192, int $offset = 0)

引數:

  • $filename:要讀取的檔名或者網路資料的描述符。
  • $callback:讀取完成後的回撥函式,接受兩個引數:$filename$content。其中 $filename 是檔名或網路描述符,$content 是讀取到的內容。
  • $size(可選):每次讀取的位元組數,預設為 8192。
  • $offset(可選):讀取檔案的偏移量,預設為 0。

示例:

Swoole\Async::read('/path/to/file.txt', function ($filename, $content) {
    if ($content === false) {
        echo "讀取檔案失敗\n";
    } else {
        echo "讀取檔案成功,檔名:{$filename}\n";
        echo "檔案內容:{$content}\n";
    }
});

Swoole\Async::read($fd, function ($filename, $content) {
    if ($content === false) {
        echo "讀取網路資料失敗\n";
    } else {
        echo "讀取網路資料成功,描述符:{$filename}\n";
        echo "資料內容:{$content}\n";
    }
}, 1024, 512);

注意事項:

  • 該函式是非同步非阻塞的,讀取完成後會立即返回,不會阻塞程式執行。
  • 回撥函式中的 $content 引數為讀取到的資料內容,如果讀取失敗,則為 false
  • 如果讀取網路資料,$filename 引數應為網路描述符,如 Socket 描述符。
  • 如果讀取檔案,$filename 引數應為檔案的絕對路徑。
  • 可以透過調整 $size 引數來控制每次讀取的位元組數,以及透過 $offset 引數來設定讀取檔案的偏移量。
補充糾錯
上一個函式: svn_repos_fs()函式
下一個函式: Swoole\Async::write()函式
熱門PHP函式
分享連結