【问题标题】:PHP script run once a day without cronPHP 脚本每天运行一次,无需 cron
【发布时间】:2013-11-16 01:21:17
【问题描述】:

我想每天为我的数据库创建一次 Excel 备份。我使用 SSH 访问我的网络服务器,但我无法安装 cron,我需要一个 sudoier 的密码或其他东西。我想我可以联系我的网络托管服务提供商。

但必须有替代方案。

有没有一种方法可以检查脚本是否已运行?

例如,如果没有人向数据库添加任何条目,我就不需要备份数据库。

所以当有人提交一些东西时,我会用它来开始编写一个 excel 文件。而如果那天别人提交了东西,我选择不写excel文件。

excel文件会有当天的时间戳 excel file_2013-11-11.xls

我唯一担心的是,如果两个人同时提交,excel文件会崩溃,或者因为你不能同时写一个excel文件而被锁定,对吗?

【问题讨论】:

    标签: php excel


    【解决方案1】:

    您可以为您的服务设置一个 API 并使用外部请求来触发该过程

    export SECRET=myapitoken
    curl http://example.com/api/jobs?id=123&token=$SECRET
    

    注意:您可以采取额外的安全措施来限制访问。按 IP 地址过滤将是一种廉价且易于实施的解决方案。

    除此之外,如果您只是用谷歌搜索“网络服务器监控”,您会发现大量可用的服务

    【讨论】:

      【解决方案2】:

      不要安装cron,应该默认安装。

      由于您似乎已经拥有 shell 访问权限,因此您应该可以使用 crontab -e 编辑用户的个人 cron 文件。请记住,此文件中的任何作业都将以您的用户而不是 root 身份运行,并且可能与 Apache 使用的用户不同。相应地规划您的脚本权限。

      【讨论】:

        【解决方案3】:

        你可以使用crontab

        每天运行一次

         0 0 */1 * * /path_to_script
        

        cron 守护进程是一个长时间运行的进程,它在特定日期和时间执行命令。您可以使用它来安排活动,既可以作为一次性事件,也可以作为重复任务。

        分钟(s) 小时(s) 天(s) 月(s) 工作日(s) 命令

        字段由空格或制表符分隔。前五个是整数模式,第六个是要执行的命令。下表简要介绍了每个字段。

        字段值说明

        分钟 0-59 命令序列执行的确切分钟

        小时 0-23 命令序列执行的一天中的小时

        第 1-31 天命令序列执行的日期

        month 1-12 命令序列执行的月份

        weekday 0-6 命令序列执行的星期几。星期日 = 0,星期一 = 1,星期二 = 2,依此类推。

        command Special 要执行的完整命令序列。命令字符串必须符合 Bourne shell 语法。可接受命令、可执行文件(如脚本)或组合。

        教程:http://v1.corenominal.org/howto-setup-a-crontab-file/

        【讨论】:

          最近更新 更多