php任务分配思路_PHP 多进程任务自动分配 采集 函数 使用备忘 6 进程 5个小时 处理 21 万有效产品 数据测试...

本文介绍了一个使用PHP实现的多进程任务分配系统,用于平均分配任务到6个进程中,每个进程每秒处理约9个任务,总计处理21万条亚马逊产品数据。任务包括远程下载图片,系统提供了丰富的函数接口,如任务分配、运行、统计等,展示了高效的任务管理和执行能力。
摘要由CSDN通过智能技术生成

客户端

示例

客户端使用的 是php 写的交互式客户端 可以看到任务分配的非常平均 6 进程 每个进程分配3.4748 万个任务 平均9/S 9个任务每秒

任务是远程下载国外亚马逊的图片

使用方法 以及函数说明

/**

* WeiCot Sp Framework

* User: ajiang

* Date: 2017/6/17 0016

* Time: 16:37

*/

include_once "Bootstrap.php";

include_once "TaskConfig.php";

use Weicot\Mysql;

use Weicot\Spider\Collection;

use Weicot\Spider\TaskTable;

$Collection = new Collection;

$db = new Mysql;

$taskTable = new TaskTable;

$taskTable->prinInfo = true; //打印信息

$taskTable->longLogShow = false; //输出长日志

$taskTable->debugScript = true; //输出执行脚本

$taskTable->filterTaskTableStatus = $runStatus; //筛选任务状态

$taskTable->oriTable = $oriTable; //源表

$taskTable->ini($runIni); //导入配置文件

$taskTable->setServiceGrop($totalServiceAutomatic); //设置服务器组

//本表的操作 自动分配 自动运行 自动采集

/*

$taskTable->setSwitchModeStatus("importData","Y"); //导入数据

$taskTable->setSwitchModeStatus("spiderBeg","Y"); //开始爬取

$taskTable->setSwitchModeStatus("syncOri","N"); //同步源表

$taskTable->automaticallyAssignRunTasks($runAutomaticallyAssignRunTasksWhere); //自动添加 分配任务 并运行脚本

*/

//采集自动采集 剩下的数据

//$taskTable->addIndex(); //给task_table figId 添加索引

$taskTable->setSwitchModeStatus("importData", "N"); //导入数据

$taskTable->setSwitchModeStatus("spiderBeg", "Y"); //开始爬取

$taskTable->setSwitchModeStatus("syncOri", "N"); //同步源表

$taskTable->runLocalTask(); //运行本地 剩下的任务

$taskTable->getStatisticalInfo(); //获得统计信息

//一些其它的常用函数

/*

$taskTable->assignAddTask($count,$totalServiceAutomatic); //根据数量分配任务

$taskTable->addIndex("ASIN","product_amz"); //给指定表 指定字段添加索引

$taskTable->addIndex() //给task_table figId 添加索引

$taskTable->dropTable(); //清除表

$taskTable->createTable(); //创建表

$taskTable->runScript(); //运行多任务脚本

$taskTable->assignTask($totalServiceAutomatic); //分配服务器

$taskTable->removeDuplicates(); //清除表中重复数据

$taskTable->getStatisticalInfo(); //获得统计信息

$taskTable->resetValue($key, $resetValue, $where); //重置表中 Key

*/

//TaskTable Class

//TaskTable 变量

$taskTable->db = ""; //数据库

$taskTable->service = ""; //服务ID

$taskTable->grop = ""; //任务组

$taskTable->prinInfo = true; //打印信息

$taskTable->savePath; //保存的路径

$taskTable->longLogShow = true; //控制长日志是否显示

$taskTable->runScriptGrop; //运行一组脚本 这里是指脚本内容

$taskTable->totalServiceAutomatic; //需要分配的服务器 自动分配

$taskTable->basePath; //基本路径

$taskTable->filterTaskTableStatus; //筛选 指定状态的任务

$taskTable->oriTable; //源表

$taskTable->register; //内存寄存器

$taskTable->registerService = "127.0.0.1"; //寄存器地址

$taskTable->registerPort = "6379"; //寄存器端口

$taskTable->enabledRegister = true; //启用寄存器

$taskTable->debugScript = false; //dedBug 脚本

//TaskTable 函数列表

$taskTable->ini($ini); // 初始化配置

$taskTable->createTable(); // 创建任务表

$taskTable->dropTable(); //删除任务表

$taskTable->addTask($figId, $url, $description = ""); //添加任务

$taskTable->delTask($id, $figId = false); // 删除任务 可以使用 fig id 或 id

$taskTable->removeDuplicates($deleteOnlyDuplicateInGroup = false); //去除重复 大于等于2 只留一条数据 $deleteOnlyDuplicateInGroup 仅删除组中的重复

$taskTable->removeOriTableDuplicates($table, $key); //清除 源表的重复数据

$taskTable->getTaskList($limit = "0,2000", $status = "P", $grop = false); //获得任务列表 status null 未采集 F 采集失败 Y 采集陈功 P 采集中

$taskTable->getTaskWithSql($sql); //通过自定义SQL 获得任务列表

$taskTable->toArray(); //任务列表 输出为数组

$taskTable->toText($filePath = false); //任务输出到文本

$taskTable->getTaskInfo($id, $key, $fagid = false); //获得任务信息

$taskTable->upInfo($key, $value, $id, $fagid = false); //更新信息

$taskTable->translationStatus($status); //翻译状态

$taskTable->upTaskStatus($figId, $status = "P"); // 更新任务状态

$taskTable->syncOriTable($table, $set, $where, $figId = false); //同步数据源表

$taskTable->upSyncTime($figId); //同步任务表中 远程同步时间

$taskTable->addIndex($keyName = "figId", $tableName = "task_list"); //添加索引

$taskTable->getStatusTotal($status, $serviceId = "*"); //获得各种状态的合计数量

$taskTable->syncTotal($service = "*"); // 已经 同步过去的数量

$taskTable->printTaskInfo($info); //输出错误信息 服务器端

$taskTable->clientPrint($info); //客户端打印 输出

$taskTable->echoStatus($status, $serviceId); //输出状态

$taskTable->getOriTableTotal(); //获得源表数量

$taskTable->getStatisticalInfo(); //获得统计信息

$taskTable->statisticalSqlData($select); //获得统计 SQl 的记录

$taskTable->assignTask($service, $rule = false, $automatic = true); //自动分配任务

$taskTable->assignAddTask($count, $service = array()); // 根据任务数量进行分配任务 count $Service=array(1,2,3) 添加任务分配

$taskTable->runScriptFile($file = "MainSpScript.php"); //运行多任务脚本

$taskTable->setRunScripGrop($scriptGrop); //设置要运行的多任务脚本

$taskTable->runScript(); //运行自动化的多任务脚本

$taskTable->setServiceGrop($serviceGrop); //设置服务器组

$taskTable->runMainScript(); //运行主脚本

$taskTable->automaticallyAssignRunTasks($where); //自动分配 并运行任务 where 条件

$taskTable->runLocalTask($limit = "0,10000"); //运行本地任务

$taskTable->resetValue($key, $resetValue, $where); //重置 源表的某个 key

$taskTable->getRegisterValue($key); //获得寄存器的值 支持分组

$taskTable->setRegister($key, $value); // 设置寄存器的值 支持分组

$taskTable->getSwitchStatus($Switch); //获得开关 importData 导入数据 spiderBeg 开始爬取 syncOri 同步 Y 打开 N 关闭

$taskTable->setSwitchModeStatus($switch, $status = "Y"); //设置选择

............................. 剩下的一些任务规划 动态表 的函数就不贴了 内部公告有

帮助信息 本来输出是有带颜色的 奈何 这WIN CDM 不支持

C:\Users\Administrator>php G:\SP2\TableTaskClient.php

Weicot Spider v0.12 Task Table Command Line

◥◣    ◢◤     ◥◣

◤        ◥◣  ◢◤       █...

▎   ◢█◣   ◥◣◢◤   ◢█   █

◣  ◢◤  ◥◣       ◢◣◥◣ ◢◤.

◥██◤  ◢◤         ◥◣

█ ●       ● █

█ 〃   ▄   〃 █

◥◣   ╚╩╝   ◢◤

◥█▅▃▃ ▃▃▅█◤

◢◤   ◥◣

█     █

◢◤▕   ▎◥◣

▕▃◣◢▅▅▅◣◢▃ WeiCot Tools Command

WebSite wwww.weicot.com ajing 1050653098@qq.com

Help Command help

[11:02:03|Task Table#]help

<========WeiCot Cli V0.23========>

Command Description

help 获得帮助

statistical 获得统计信息

removeDuplicates 清除表中重复数据

runScript 运行多任务脚本

dropTable 删除任务表

createTable 创建任务表

time 获得当前日期

addIndex 给任务列表添加索引

assignTask 分配服务器

exit 退出

[11:02:06|Task Table#]statistical

源表数据量:209235 合计任务量:208488

[控制模块] 导入数据: N 采集: Y 同步: N 寄存器: 启用

分组 任务数量

amz_1 208488

任务 数量 处理中 完成 未处理 失败 同步

2 34748 753 33988 NULL 7 NULL

1 34748 NULL 34740 NULL 8 NULL

3 34748 477 34250 NULL 21 NULL

4 34748 1590 33126 NULL 32 NULL

6 34748 2191 32552 NULL 5 NULL

5 34748 1433 33313 NULL 2 NULL

状态 数量

任务成功 201963

处理中.. 6450

任务失败 75

没有重复的 标记

[11:02:23|Task Table#]

[13:50:37|Task Table#]statistical

源表数据量:209235 合计任务量:208488

[控制模块] 导入数据: N 采集: Y 同步: N 寄存器: 启用

分组 任务数量

amz_1 208488

任务 数量 处理中 完成 未处理 失败 同步

2 34748 NULL 34741 NULL 7 NULL

1 34748 NULL 34740 NULL 8 NULL

3 34748 NULL 34727 NULL 21 NULL

4 34748 NULL 34716 NULL 32 NULL

6 34748 NULL 34743 NULL 5 NULL

5 34748 NULL 34746 NULL 2 NULL

状态 数量

任务成功 208413

任务失败 75

没有重复的 标记

[13:52:19|Task Table#]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值