【问题标题】:How to delay exec command in php如何在php中延迟exec命令
【发布时间】:2013-03-06 23:16:37
【问题描述】:

我知道这种问题已经被问过很多次了,但我还没有找到合适的答案。这里是:

我在 debian 上有一个站点 - apache/php/mysql。 我已经设法允许 www-data 执行 iptables 命令。现在我需要确定是否可以在不让用户/浏览器等待的情况下延迟这样的命令。

有什么意义? - 当用户认证时,php 将获得他的公共 IP 地址并在防火墙中打开一个端口。我希望这个端口打开(假设)2 分钟(足够的时间来建立 VPN 连接),然后我希望关闭这个端口。

所以,基本上,我希望 PHP 执行一个命令,然后在 2 分钟后执行另一个命令 - 所有这一切都不会让浏览器等待这两分钟。

从用户的角度来看:John 在 test.com 进行身份验证并立即关闭他的浏览器并启动他的 vpn 连接。如果他在 2 分钟后关闭 VPN 连接,他必须重新登录。

这可能吗?

谢谢。

【问题讨论】:

    标签: php command exec delay iptables


    【解决方案1】:

    使用at:

    shell_exec('echo "iptables --something 1.2.3.4" | at now + 2 minutes');
    

    【讨论】:

    • 如果您在 /etc/at.deny 中有用户“www-data”(默认情况下在我的电脑上),这将不起作用
    【解决方案2】:

    让 php 执行一个 bash 脚本,在休眠 2 分钟后为你运行 iptables 命令?

    【讨论】:

      【解决方案3】:

      作为单独的脚本运行它,不要等待它完成,

      exec("/usr/bin/php script.php &");
      

      【讨论】:

      • 不是理想的解决方案,但只要max_execution_time 超过 2 分钟就应该可以工作。
      • 没错,我通常会根据任务使用 perl 脚本而不是 php。
      猜你喜欢
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-28
      • 1970-01-01
      • 1970-01-01
      • 2023-01-13
      • 2016-08-30
      相关资源
      最近更新 更多