【问题标题】:How to run a php file every 5 minutes如何每 5 分钟运行一个 php 文件
【发布时间】:2019-10-26 09:47:09
【问题描述】:

如何每 5 分钟左右运行一次 PHP 文件?我曾尝试使用 cron,但它似乎不起作用。假设我希望我的网站运行一个播放声音的 php 文件。如何使 php 文件每 5 分钟运行一次,以便每 5 分钟播放一次声音。我知道 JavaScript 可以做到这一点,因此该函数可以按设定的时间间隔运行,但我希望文件也能做到这一点。

这样做的原因是我正在创建一个网站,我希望实时通知用户。为此,我需要运行 php 文件,以便它可以检测用户通知的更改,然后在用户收到新通知时发出噪音。 如果需要更多信息,我可以提供。

编辑:

这就是我曾经尝试运行的 cron localhost Run Cron Job on PHP Script, on localhost in Windows

我的 script.bat 文件 "C:\Xammp\php\php.exe" -f "C:\Xammp\htdocs\SocialMedia\Admin\Users\Notification.php"

还有我的 shellscript.vbs 文件

Set WinScriptHost = CreateObject("WScript.Shell") WinScriptHost.Run Chr(34) & "C:\Xammp\htdocs\SocialMedia\Site\script.bat" & Chr(34), 0 Set WinScriptHost = Nothing

我已经按照他们在那篇帖子中所说的内容进行了操作,但我的控制台日志中没有看到网络的任何变化。它应该显示一个文件每 x 分钟运行一次,但它没有

编辑: 虽然我的问题没有完全回答,但这个网站是我找到答案的地方。 https://web-push-book.gauntface.com/chapter-01/02-how-push-works/ 谢谢!

编辑 - 这是我问题的答案 - https://developer.hyvor.com/php/ajax-long-polling

【问题讨论】:

    标签: php file cron


    【解决方案1】:

    在 linux 中运行 cron 作业或在 windows 中运行任务调度程序不会完成您想要的。这不是技术的工作方式。客户提问,服务器回复,故事结束。为了说明这一点,您的 cron 工作如何知道谁应该得到更新?它没有,也不能。

    在典型的网站场景中,我能想到的唯一方法是让您的客户端通过 ajax 不断地轮询服务器以获取更新。如果您的观众不多,这可能会奏效。但它不会很好地扩展。

    还有另一种可能适合您的技术:网络推送通知

    但是,我怀疑与使用此概念相关的学习曲线相当长。快速搜索发现了一些您想要调查的页面:

    https://serviceworke.rs/push-get-payload_demo.html

    https://github.com/web-push-libs/web-push-php

    除了名字我真的一无所知,所以我不知道这是否会满足您的要求,但除了让您的客户端定期轮询服务器之外,这是唯一的事情。

    【讨论】:

    • 并不是我想要的,但这肯定会在以后有所帮助。感谢您提供这个。当我找到答案或弄清楚时,我会更新我的问题。
    • 您最好的选择可能是设置一个 JavaScript 计时器,每隔 5 秒左右轮询一次您的网站,并在收到“哔”的回复时。但是,我的经验是在浏览器中播放声音很慢。 :(
    • 让网络推送工作起来,你将拥有许多程序员所没有的知识:)
    • 虽然我无法准确找出服务人员,但我确实找到了 ajax 轮询。这将暂时有效。 developer.hyvor.com/php/ajax-long-polling
    【解决方案2】:

    要在 Windows 中创建调度程序,您需要: 在您的服务器或系统上创建 .bat 文件; 在 .bat 文件中键入以下命令:

    “F:\xampp\php\php.exe” -f “F:/xampp/htdocs/sitefolder/test.php”;
    

    在 Windows 的任务调度器中设置调度器时间和文件。

    祝你好运

    【讨论】:

    • 嗨,我已经尝试过了,但这似乎不起作用。 stackoverflow.com/questions/24035090/… 这是我曾经尝试让它工作的东西。但如果它每 x 分钟运行一次,我应该会在控制台日志中看到它。
    • 这不能满足 OP 的要求。通常,网站是无状态的交易:客户端请求一个页面;服务器响应一个页面。之后,交易完成。无法再向客户端发送任何通信,而且客户端也不会在寻找它。
    • @TimMorton 那么当您在他们的网站上滚动时,facebook 如何自动通知您。如果有人喜欢我的帖子,我会自动收到通知。必须有一种方法可以运行脚本,以便通知我。如果我通过其他用户的鼠标单击执行了 onclick 语句,如何使文件从我的站点运行。我看到这种情况发生的唯一方法是每 5 分钟运行一个脚本来检测更改或通知,然后通知您。
    • 好问题,我得研究一下。他们可能正在投票。
    • 他们使用推送通知。
    猜你喜欢
    • 2014-05-20
    • 1970-01-01
    • 2011-08-12
    • 2022-12-18
    • 2022-01-26
    • 2020-07-18
    • 2013-11-27
    • 2013-02-04
    • 2010-12-04
    相关资源
    最近更新 更多