fopen + fwrite比shell_exec快吗?

| 我想将文本写入文件(如日志条目/数据/其他内容),而服务器位于UNIX系统上 使用起来更快吗?
$handle = fopen(\"somefile\"); 
fwrite($handle,\"sometext\");
或这个:
shell_exec(\"echo \'sometext\' > somefile\");
使用shell_exec方法还有其他缺点吗? 速度?安全?性能?
已邀请:
对于像您的示例这样的简单操作,两者都不会明显更快,安全性也不是问题。如果您的shell参数是PHP变量,请确保在它们上使用
escapeshellcmd()
(此处为文档)。 但是,在过程代码中,我认为我更喜欢
fopen() fwrite()
方法,因为它更容易在写入之前检查错误和文件句柄的有效性,然后检查
fwrite()
的返回以确保您的写入操作成功。 shell命令将仅返回单个错误代码,因此调试发生错误的位置将更加困难。
更快。只需考虑shell_exec正在派生,然后加载shell二进制文件,运行它,然后shell解释命令,然后shell再次派生运行命令...
从长远来看,f ...()函数肯定会更快/更安全。即使您只执行回显,服务器仍必须派生自己,使用exec()一个外壳,外壳必须解析其参数,调用回显,然后仍然打开文件以写出您的通过自己的fopen / fwrite / fclose序列获取数据。 仅需一点调试,就没什么大不了的了。在忙碌的站点上写出“频繁”日志条目,这将导致服务器瘫痪。 把它想象成走到冰箱前喝一杯,或者走出门到世界各地,然后又回到冰箱前,之间的区别。

要回复问题请先登录注册