Php 是fopen+;写得比shell_exec快?

Php 是fopen+;写得比shell_exec快?,php,unix,Php,Unix,我想将文本写入服务器位于unix系统上的文件(如日志条目/数据/任何内容) 使用以下工具是否更快: $handle = fopen("somefile"); fwrite($handle,"sometext"); 或者这个: shell_exec("echo 'sometext' > somefile"); 使用shell_exec方法还有其他缺点吗? 速度安全性能?对于像您的示例这样简单的东西,两者都不会明显更快,安全性也没有问题。如果您的shell参数是PHP变量,那么请确保对它

我想将文本写入服务器位于unix系统上的文件(如日志条目/数据/任何内容)

使用以下工具是否更快:

$handle = fopen("somefile"); 
fwrite($handle,"sometext");
或者这个:

shell_exec("echo 'sometext' > somefile");
使用shell_exec方法还有其他缺点吗?
速度安全性能?

对于像您的示例这样简单的东西,两者都不会明显更快,安全性也没有问题。如果您的shell参数是PHP变量,那么请确保对它们()使用
escapeshellcmd()

但是,在过程代码中,我想我更喜欢
fopen()fwrite()
方法,因为在写入之前更容易检查错误和文件句柄的有效性,然后检查
fwrite()
的返回以确保写入操作成功。shell命令只会返回一个错误代码,因此在发生错误的地方调试会更加困难。

从长远来看,f...()函数显然会更快/更安全。即使您“仅”执行echo,服务器仍必须自身fork,exec()一个shell,shell必须解析其参数,调用echo,然后仍然打开文件,通过自己的fopen/fwrite/fclose序列写出数据

只需简单的调试,没什么大不了的。在繁忙的站点上写“频繁”的日志条目,这将是服务器的死亡


把它想象成走出家门和环游世界,结果又回到冰箱前的区别。

快多了。只需考虑Shell执行程序,然后加载shell二进制文件,运行它,然后shell解释命令,然后shell再次运行命令……/P>