系统函数调用,有什么建议吗?

时间:2012-02-22 11:31:17

标签: php shell system

我有一个用户需要登录的网站,而且身份验证基于SESSION变量和数据库。

为了简化,让我这样描述: 我有简单的用户属于组,我有组管理员。他们都拥有订阅。当组管理员决定升级服务时,会立即为所有用户完成。我需要更新所有订阅,我需要单独为每个订阅收费。

因此。我需要做的就是去DB,然后逐个开始:

1. charge
2. receive status from cc company.
3. update the DB entry accordingly.
4. repeat for next simple user

问题是,当团队经理更新服务时,我需要启动一个批处理过程,这可能需要一段时间才能完成,但是如果团队经理出于某种原因关闭了浏览器(按下停止按钮) ,电力耗尽,其他原因导致连接失效),行动无法完成。用户将不予受理。

我认为解决这个问题的方法是使用PHP脚本启动shell命令。我会将参数发送到脚本,如 system(“php batch.php?ID = $ group_id?process = all”),这反过来可能会完成工作。

我的问题是,我习惯于通过SESSION参数等来验证我的用户和整个网站的数据。但是在这种情况下(调用系统命令),我真的不能去检查谁实际解雇了那个剧本。它可以是用户,也可以是我想要的脚本。

我想阻止用户访问该脚本,我希望该脚本在发布后完成。

我怎样才能做到这一点?还有其他建议吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

  1. 将值作为argv参数(php batch.php $group_id all
  2. 传递
  3. 检查$_SERVER['argv']
  4. 中是否存在这些内容

    对于记录,$_SERVER['argv']是命令行的$_GET。网页无法设置argv值,因此您是安全的。

    更好的当然是不要将此文件放在您的网站目录中。

相关问题