对于一个项目,我需要安排几个PHP脚本。有些脚本有点复杂(即发送邮件,做数据库,使用多个外部Web服务,使用外部文件和类等)。问题是这些脚本也需要从浏览器调用,它们确实使用了$_SERVER
数组中的一些变量(包括HTTP_HOST
)。
有没有办法让这些脚本在命令行中运行,或者我是否必须将它们重写为“命令行兼容”?或者,使用命令行中指定不可用变量的参数会更好吗?
我们有一台运行Windows Server 2008的服务器。
答案 0 :(得分:2)
您应该抽象浏览器和命令行环境中常见的脚本部分。然后你可以将它包含在两个脚本中,其中一个将使用$ _SERVER,另一个命令行参数变量来运行公共部分。
答案 1 :(得分:1)
安排PHP脚本的最佳做法?
1)不要。这是一个滑坡 - 你最终花了太多时间试图将脚本组织成可用的时间段,你最终得到一个系统,根据哪些工作已经运行而没有改变状态。真的,您希望直接触发所有处理以响应用户请求。 (这并不意味着他们必须同步同步并且在与用户请求相同的执行线程中)。
2)不要在MSWindows上执行此操作 - Microsoft操作系统可以提供GUI,但没有可用于其他操作系统上的作业管理和自动化的工具范围
我见过很多人因为代码的性能糟糕而将人们推入预定批次的情况。在很多情况下,更好的解决方案是解决性能问题。
话虽如此,因为您已经陷入困境,是的,您可以将所有代码复制到命令行和Web版本中 - 或者您可以下载wget或cURL并安排这些程序通过GET或POST调用您的URL传递所需的值