我有一个用户需要登录的网站,而且身份验证基于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参数等来验证我的用户和整个网站的数据。但是在这种情况下(调用系统命令),我真的不能去检查谁实际解雇了那个剧本。它可以是用户,也可以是我想要的脚本。
我想阻止用户访问该脚本,我希望该脚本在发布后完成。
我怎样才能做到这一点?还有其他建议吗?
谢谢!
答案 0 :(得分:2)
php batch.php $group_id all
)$_SERVER['argv']
对于记录,$_SERVER['argv']
是命令行的$_GET
。网页无法设置argv值,因此您是安全的。
更好的当然是不要将此文件放在您的网站目录中。