gpt4 book ai didi

php - 大量用户的 Cron 作业管理

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:24:27 25 4
gpt4 key购买 nike

我有类似 backupify 的服务.从不同的社交媒体平台下载数据,目前我有大约 2500 个活跃用户,每个用户运行一个脚本,从 facebook 获取数据并将它们存储在 Amazon S3 上,我的服务器是 AWS 上的 Ec2 实例。

我在表中有 900 个 facebook 用户条目,有一个 PHP 脚本运行并从数据库表中获取用户,然后从 facebook 备份数据,然后从 facebook 中选择下一个用户。

当我有不到 1000 个用户时一切都很好,但现在我有超过 2500 个用户问题是 PHP 脚本停止,或运行前 100 个用户然后停止,超时等。我正在运行 PHP 脚本来回 php -q myscript.php 命令。

另一个问题是单个用户脚本需要大约 65 秒才能从数据库表到达最后一个用户可能需要几天时间,所以在数据库表等上并行运行的最佳方式是什么。

请建议我为大量用户备份大量数据的最佳方法是什么,我应该能够监控 cron,就像一个 mangaer。

最佳答案

如果我没弄错的话,你有一个针对所有用户的单一 cron 任务,以某种频率运行,试图一次性处理每个用户的数据。

  1. 您是否尝试发出 set_time_limit(0);在代码的开头?
  2. 此外,如果任务需要大量资源,您是否考虑过为每个 N 个用户创建一个单独的 cron 任务(基本上模仿多线程行为;从而利用服务器的多个 CPU 内核)?
  3. 正在将您的数据写入某种 cache而不是数据库,并有一个单独的任务将缓存内容提交到对您可行的数据库?
  4. 您是否有机会使用内存中的数据表(这非常快)?您需要不时将数据库内容保存到磁盘,但以这个价格,您可以获得快速的数据库访问。
  5. 您能否将任务外包给独立的服务器作为分布式服务,并编写 cron 脚本作为它们的负载平衡器?
  6. 优化您的代码也可能有所帮助。例如(如果您还没有这样做)您可以缓冲收集的数据并在脚本末尾在单个事务中提交,这样执行流就不会被数据库重复出现的 I/O 阻塞分散。

关于php - 大量用户的 Cron 作业管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15475019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com