【发布时间】:2016-12-09 02:16:16
【问题描述】:
我有一个包含多个表(大约 100 个)的数据库,其中记录基于类别存储。每个类别是一个表,每个表包含多个项目。每个项目每天都有多个交易记录,每当发生交易时,每一行都有多个字段。
我需要根据条件获取每个项目的记录,并在应用程序(PHP 或 Python 程序)中执行一些操作(例如:某种聚合)。结果再次存储在另一个数据库表中。
目前我正在为每个项目手动运行操作。通过将项目作为参数传递来为每个项目执行程序。但是每天都有新的品类和新的物品,让我很难调整手动执行。
以下是我尝试自动化的方法,但没有一种方法奏效。
-
在 for 循环中为每个项目运行 MySQL 查询,但执行不工作或仅在一个项目上执行。 这是我用于为每个项目提取数据的控制器,但这并不要求所有项目。它仅适用于第一项或最后一项。 我也不能让循环等到数据库拉取完成。
for($i=0;$i<$total_items;$i++)
{
$data['results'] = $this->scripts_model-> run_daily_stats($item, $Parameter1, $Paramet2);
//Use the Results in some operations, and then proceed with next result set.
}
- 为每个项目创建平面文件并提取记录。这在一些现存的情况下是有效的,但是根据条件从平面文件中提取记录似乎也同样困难。并且重新创建每个文件都不起作用。
- 通过添加新行将所有项目放入批处理作业中,每 30 秒执行一次,但完成所有项目需要很长时间,而且我需要每天更新批处理文件。
这是我正在使用的示例批处理文件。现在有 320 行,运行大约 2 小时。而且我每天都添加多行。所以预计这会增加总执行时间。
15 12 * * * wget 127.0.0.1/~home/scripts/update_daily/item1 >/dev/null 2>&1
15 12 * * * sleep 30; wget 127.0.0.1/~home/scripts/update_daily/item2 >/dev/null 2>&1
16 12 * * * wget 127.0.0.1/~home/scripts/update_daily/item3 >/dev/null 2>&1
16 12 * * * sleep 30; wget 127.0.0.1/~home/scripts/update_daily/item4 >/dev/null 2>&1
.
.
55 12 * * * wget 127.0.0.1/~home/scripts/update_daily/item234 >/dev/null 2>&1
.
.
.
4. Group multiple Items and put in a batch file, but the unable to run the program for each item.
有没有一种方法可以在不中断 MySQL 连接的情况下自动执行?请提出任何可以帮助我解决问题的技术或程序。
谢谢
拉维
【问题讨论】:
-
请向我们展示您到目前为止所做的尝试!
标签: php python mysql codeigniter