swoole server 里面也好,或者单纯的 php-cli 脚本里也好,现在可以像 go 那样写重磁盘 IO 的任务了,举个例子: 往 2500 个文件中分别写入 1KB 的数据
<?php
use Swoole\Coroutine as co;
ini_set('memory_limit', -1);
$ct=0;
for($i=0;$i<2500;$i++)
{
co::create(function () use (&$ct)
{
$uid = \Swoole\Coroutine::getuid();
$fp = fopen(__DIR__ . "/test/{$uid}", "a+");
$str='';
for($j=0;$j<1024;$j++)$str.='1';//1K
$r = co::fwrite($fp, $str);
$ct++;
//echo "|{$ct}";
});
}
function shutdown()
{
global $ct;
echo "ct:{$ct}, mem_peak:".memory_get_peak_usage().", mem:".memory_get_usage().PHP_EOL;
}
register_shutdown_function('shutdown');
php fwrite.php
ct:2500, mem_peak:665626736, mem:513288
0.5s 内完成
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.