我的任务是定期将来自不同网站(大约 450 个)的 Google Analytics 数据推送到运行在不同服务器上的 SQL Server 2005。我知道我可以使用 PHP 运行 PDO 查询来写入 SQL Server DB,但我不清楚第二部分,即定期执行此操作。客户希望每小时推送一些数据,每天推送其他数据。
设置 cron 作业是实现此目的的最佳方法吗?我是否必须将 PDO 代码段添加到我想要从中推送数据的每个站点,或者我可以从每台服务器上的一个位置运行多个站点的查询?cron 作业和 PDO 是最好的方法吗,还是有更实用的方法?
答案1
您没有提到这些网站运行在哪种操作系统上,但我会假设是 Linux,因为您提到了 cron 作业;在这种情况下,我推荐 PERL 或 Python,它们完全支持运行 SQL 查询,并且非常容易作为 shell 脚本运行,因此可以作为 cron 作业运行。我会避免使用 PHP,因为让它从 shell 脚本运行可能会有点棘手,但这取决于您:与其他语言相比,您对 PHP 的信心可能要大得多,而且您实际上能除了构建网页之外,还使用 PHP 做其他事情。
在 Unix/Linux 系统上调度任务时,Cron 作业绝对是最佳选择。
如果您碰巧需要在 Windows 中执行相同操作,我仍然建议采用相同方法(使用计划任务代替 cron 作业):虽然 SQL Server 具有用于运行查询的命令行工具(osql
和sqlcmd
),但您仍然必须在它们周围包装某种脚本才能收集和格式化数据;PowerShell 可以在这里为您提供帮助(它也可以直接对 SQL Server 执行查询),但您可能更熟悉其他脚本语言,并且 PERL 和 Python 都可以在 Windows 上使用。