使用yield之前
function actionIndex($message = 'hello world') { $valuesArray = []; // 获取初始内存使用量 echo '开始'.round(memory_get_usage() / 1024 / 1024, 2) . ' MB' . PHP_EOL; for ($i = 1; $i < 800000; $i++) { $valuesArray[] = $i; // 为了让我们能进行分析,所以我们测量一下内存使用量 if (($i % 200000) == 0) { // 来 MB 为单位获取内存使用量 echo '中间'.round(memory_get_usage() / 1024 / 1024, 2) . ' MB'. PHP_EOL; } } return $valuesArray; } actionIndex();
使用yield之后
function getValues() { // 获取内存使用数据 // echo round(memory_get_usage() / 1024 / 1024, 2) . ' MB' . PHP_EOL; file_put_contents("log-memory.txt", '开始'.print_r(round(memory_get_usage() / 1024 / 1024, 2) . ' MB',1).PHP_EOL, FILE_APPEND); for ($i = 1; $i < 800000; $i++) { yield $i; // 做性能分析,因此可测量内存使用率 if (($i % 200000) == 0) { // 内存使用以 MB 为单位 file_put_contents("log-memory.txt", '中间'.print_r(round(memory_get_usage() / 1024 / 1024, 2) . ' MB',1).PHP_EOL, FILE_APPEND); //echo round(memory_get_usage() / 1024 / 1024, 2) . ' MB'. PHP_EOL; } } } //测试 function actionTest() { $myValues = getValues(); // 在循环之前都不会有动作 echo '开始'.round(memory_get_usage() / 1024 / 1024, 2) . ' MB' . PHP_EOL; foreach ($myValues as $Key=> $value) { // echo $value.PHP_EOL; if (($Key % 200000) == 0) { // 来 MB 为单位获取内存使用量 echo '中间' . round(memory_get_usage() / 1024 / 1024, 2) . ' MB' . PHP_EOL; } } // 开始生成数据 } actionTest();
标签:1024,PHP,MB,yield,EOL,理解,memory,usage,php From: https://www.cnblogs.com/fyiyy/p/16644060.html