对不起,如果标题是含糊不清的-我不太清楚该怎么说!
我在做什么
我正在运行一个linux命令,将数据输出到变量中,解析数据,并将其作为数组输出。数组值将使用php显示在页面上,并且该php页面输出每10秒通过ajax请求一次,因此,实际上,数据将每10秒检索和显示/更新一次。每一个请求可以解析多达10000个字符,尽管这通常要低得多。
另类想法
我想知道是否有更好的替代方法,每隔10秒检索一次数据,因为多个用户(在服务器上运行的cronjob可以执行bash或php(哪个更快?)获取数据并将其存储在mysql数据库中。然后,对php输出的任何ajax调用都将返回mysql数据库中的值,而不是每10秒直接调用一次以执行服务器代码。
为什么?
我知道直接从php运行exec存在安全问题,而且(我希望这不是微观优化)我担心服务器上的cpu使用率。服务器正在运行sempron处理器。是的,它们仍然存在。
只有当用户在页面上时(idea 1)才执行此操作意味着服务器不运行不需要运行的代码。然而,这是缓慢和不安全吗?
以防Linux命令的类型可能有助于确定其效率:
shell_exec("transmission-remote $host:$port --auth $username:$password -l");
我希望在效率和安全级别上,我在上面概述的两种方法存在差异,这不仅仅是微观优化。如果有更好的替代方法,我很想了解这些!:)

最佳答案

我认为一个单独的cron任务来进行数据处理的想法是合理的。你说得对——直接从php脚本执行服务器命令不是最安全的方法,通常应该避免。
但是,从性能的角度来看,您可能也不希望经常访问mysql数据库来获取数据,尤其是在数据总是在变化和更新的情况下。我建议使用像memcache这样的密钥val存储系统,或者如果您没有太多可用内存,可以使用磁盘/内存混合存储。后台进程将定期更新密钥的值,然后从主web服务器进程访问该值。

关于php - PHP shell_exec()-直接运行还是执行cron(bash/php)并包含MySQL层?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13104396/

10-11 23:04
查看更多