[PHP] 业务逻辑大内存占用的优化思路, yield 和 chunk

通过llama.cpp与羊驼聊天的网页界面- 详解 Serge 的启动使用

 

示例:

header("content-type:text/html;charset=utf-8");
function readTxt() {
    $handle = fopen("./test.txt", 'rb');

    while (feof($handle)===false) {
        yield fgets($handle);
    }

    fclose($handle);
}

foreach (readTxt() as $key => $value) {
    echo $value.'<br />';
}

yield 生成器允许你 在 foreach 代码块中写代码来迭代一组数据而不需要在内存中创建一个数组。

每次被加载到内存中的文字只有一行,大大的减小了内存的使用。

 

另一种方式是数组不叠加,而是重新赋值;分次读取就是类似SQL 中的 limit 分页操作。

 

Refer:php_yield

Link:https://www.cnblogs.com/farwish/p/15908880.html

posted on 2022-02-25 23:56  ercom  阅读(96)  评论(0编辑  收藏  举报