php - 在服务器上安排数千个任务 [PHP 脚本]
问题描述
假设一个网站需要每 5 分钟显示一次更新的内容。当然,我们可以使用 cron 作业来安排 PHP 脚本,例如
$weather = file_get_contents("https://weather.com/country/state/city/day/hour/minute.json");
$upload_to_database = send_data_to_db();
假设这个简单的脚本获取数据并将其发送到 MYSQL,然后通过每隔几分钟使用 AJAX 获取数据或在分析数据后发送通知等方式将数据显示在前端......
现在,如果我们有成千上万个城市会怎样。如何自动为这些城市创建 cron 工作?
我希望你明白我的问题。
另一个例子可以是数千个关键字的 SERP 排名跟踪器等等......
解决方案
与其创建许多单独的 cron 作业,每个作业都执行一项检索/更新作业,不如创建一个通用的 cron 作业来完成所有检索/更新工作。
如果您希望它们独立并同时运行,您可以从该 cron 作业中生成单独的进程。您可以从 PHP 动态执行此操作,因此您可以使用当前城市列表并为每个城市生成一个单独的进程。
例如,不要运行“php updatecity.php Washington”(作为如何运行更新特定城市的 php 脚本的示例),运行以下命令:
nohup php updatecity.php "$city" > /dev/null 2>&1 &
这将在后台静默启动一个单独的 php 进程,以参数作为参数运行您的updatecity.php
脚本。$city
确保您的进程不能停止或继续运行,否则您最终可能会用大量未终止的进程淹没您的服务器。
推荐阅读
- mysql - 如何找出mysql中每个列的大小?
- r - 如何防止 R Expss 在输出数据框中将变量名称与行标签混合?
- javascript - p5.js 在太多音效后变慢
- java - 在 Recyclerview 中显示捕获图像和图库图像
- javascript - 使用 appendchild 和 html 表的乘法表
- facebook - 需要应用审核才能使 Facebook Webhook 正常工作。如何发展?
- android - 如何正确设置 UiAutomatorViewer 以检查用于使用 Appium 测试 Android 应用程序的元素?
- c# - 无法从 C# 和 ASP.NET MVC 中的 JsonResult 检索数据
- python - 基于 OOB 的 Python 问题,我是否想念一些东西?
- python - 如何正确取消所有挂起的 asyncio 任务并正确关闭 Python 中所有线程的所有循环?