比如要生成10000个或者更多个文件,如何提高速度?
第一:手动用fwrite()比直接用file_put_contents要块很多 第二:把事件驱动换成swoole,配置里面就可以改,然后用swoole_async_writefile 异步写入文件函数,那就很快了
fwrite也没快多少
这种webman写估计不咋地,应该不会快的,nodejs大概多少时间?
忘了,反正甩php几条街
这玩意有啥实际意义嘛?我看压测node js 没有干过webman呀
有一些地方有这种场景的,比如一些文章需要生成静态html,文章可能几十万,这时候用php(tp或webman,不打算用swoole)就很慢,但发现用nodejs 快不止一点点
哦哦,这玩意只能多开进程,每个进程生产100个,开100个进程试试呢
有空试试
项目引入amphp 或者 reactphp 然后你就会发现 js那一套怎么过来了 /手动狗头
workerman做不到吗 /手动狗头
workerman 应该是实现不了的 它更像是php在cli下运行的一种方案 而不是 异步库
如果考虑php原生实现可以看下 php Fiber 或者 php yield 这两种方案 但是他们都更加底层
amphp 或者 reactphp 就是对这两种东西的封装 他们更加成熟
public function index() { $t1 = microtime(true); $data = $this->testRange(10000); foreach ($data as $file) { fputs($file, "Hello World!"); fclose($file); } $t2 = microtime(true); $tips = "运行时长:" . round(($t2 - $t1), 3) . 's'; var_dump($tips); } protected function testRange($len) { $public = public_path() . ""; for ($i = 1; $i <= $len; $i++) { yield fopen($public . "test_" . $i . ".txt", "w"); } }
我测比我上面截图代码还慢
上面截图的在你机子上几秒?
1.073秒还慢?
不对不对,我刚才写错了,原始是26秒,改成上面的代码也是10秒左右,确实快了,nodejs 2.5秒
我这机子测试0.7秒
自定义进程试试,然后分配写入呢
我windows 机器测试都是2.77秒
linux估计更快
window系统,我截图代码在tp6里耗时 跟上面 网友提供的代码 运行基本 6秒左右,并没有差距,我还是用nodejs吧,不折腾了
第一:手动用fwrite()比直接用file_put_contents要块很多
第二:把事件驱动换成swoole,配置里面就可以改,然后用swoole_async_writefile 异步写入文件函数,那就很快了
fwrite也没快多少
这种webman写估计不咋地,应该不会快的,nodejs大概多少时间?
忘了,反正甩php几条街
这玩意有啥实际意义嘛?我看压测node js 没有干过webman呀
有一些地方有这种场景的,比如一些文章需要生成静态html,文章可能几十万,这时候用php(tp或webman,不打算用swoole)就很慢,但发现用nodejs 快不止一点点
哦哦,这玩意只能多开进程,每个进程生产100个,开100个进程试试呢
有空试试
项目引入amphp 或者 reactphp 然后你就会发现 js那一套怎么过来了 /手动狗头
workerman做不到吗 /手动狗头
workerman 应该是实现不了的 它更像是php在cli下运行的一种方案 而不是 异步库
如果考虑php原生实现可以看下 php Fiber 或者 php yield 这两种方案 但是他们都更加底层
amphp 或者 reactphp 就是对这两种东西的封装 他们更加成熟
我测比我上面截图代码还慢
上面截图的在你机子上几秒?
1.073秒还慢?
1.073秒还慢?
不对不对,我刚才写错了,原始是26秒,改成上面的代码也是10秒左右,确实快了,nodejs 2.5秒
我这机子测试0.7秒
自定义进程试试,然后分配写入呢
我windows 机器测试都是2.77秒
linux估计更快
window系统,我截图代码在tp6里耗时 跟上面 网友提供的代码 运行基本 6秒左右,并没有差距,我还是用nodejs吧,不折腾了