1

我想优化我的部分代码以提高性能。由于我的应用程序使用命令行工具,我认为并行执行代码行而不是顺序执行代码肯定会提高性能

<?php
$value = exec("command goes here"); //this takes time
/* Some instructions here that don't depend on $value */
/* Some instructions here that don't depend on $value */

$result = $value*2 ; //this is just a dumb example

?>  

我想同时执行不依赖于值的代码,$value以便整个脚本执行得更快,而不是等待exec()完成

4

2 回答 2

0

对于从阻塞 exec 线程中释放 php 线程的快速而肮脏的方式,您可以简单地在命令后附加“&”或“& disown”。在下面的示例中,我还将所有错误和标准输出重定向到 /dev/null。(我假设一个 linux 系统,只是使用了一个可能需要一些时间的简单命令......)

$command = "mv oldFolder/hugeFile.txt newFolder/hugeFile.txt >> /dev/null 2>&1 &";
$value=exec($command);

如果您确实需要 $command 的返回值,只需删除该>> /dev/null 2>&1位。

于 2014-10-18T11:35:25.560 回答
0

不幸的是,PHP 在并行性、并发编程方面总是让你失望……而且我从来不知道为什么 PHP 不支持这些重要的东西,以及 PHP 什么时候想要支持这些。

但也许你想在 php 中使用 Fork(如果你知道 Fork 中的问题和麻烦)

http://php.net/manual/en/function.pcntl-fork.php

https://codereview.stackexchange.com/questions/22919/how-to-fork-with-php-4-different-approaches

于 2014-10-18T11:23:38.370 回答