如何解决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序列获取数据。
仅需一点调试,就没什么大不了的了。在忙碌的站点上写出“频繁”日志条目,这将导致服务器瘫痪。
把它想象成走到冰箱前喝一杯,或者走出门到世界各地,然后又回到冰箱前,之间的区别。版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。