arikin/crimeflare

从www.crimeflare.us下载和解压缩数据文件

安装: 33

依赖项: 0

建议者: 0

安全: 0

星标: 13

关注者: 1

分支: 2

公开问题: 0

类型:项目

v0.1.0 2017-10-24 05:16 UTC

This package is not auto-updated.

Last update: 2024-09-29 03:00:02 UTC


README

此项目将Crimeflare数据保持最新状态,并在数据库中。数据文件zip的下载页面:http://www.crimeflare.info/zippy.html 此页面有它自己的搜索表单:http://www.crimeflare.info/cfs.html#box

概述

它下载数据zip文件,然后提取它们。提取的文件被解析成变量。然后,这些数据被插入到一个数据库中,每个数据文件对应一个表。

设置文件,crimeflare.json,允许您设置数据库凭据、要下载的文件以及表sql信息。

这个项目打算每三周作为cron作业运行一次。Crimeflare本身也只每三周更新一次。例如,如果您尝试每小时更新一次,它们会禁用您的IP地址进行滥用。所以不要滥用它们花时间建立的资源。

安装

这是一个简单的composer require。

php composer.phar require arikin/crimeflare

通过仔细设置文件权限来保护crimeflare.json文件。如果需要,您也可以将其移动到另一个路径。只需将设置传递给Crimeflare即可。

$crime = new Crimeflare(array(
    'settings_file' => "[full path to file]"
));

用法

使用真实的DB凭据更新crimeflare.json文件。
初始化Crimeflare类并调用update方法。

use Arikin\Crimeflare;

$crime = new Crimeflare();
$crime->update();

请注意,Crimeflare数据文件相当大。每个文件逐个逐行处理,但在创建SQL INSERT语句时确实会占用内存。所以请确保为脚本设置内存限制。

ini_set('memory_limit', '2G');

crimeflare.json

JSON格式的设置文件。以下是对设置的说明

  • base_dir - 基础目录的完整路径。不要有尾随斜杠。在这里创建download/和extract/目录。**重要**完成数据文件后,不会删除数据文件。请在此脚本中完成此操作以节省空间。

  • base_url - 文件的基准URL。不要有尾随斜杠。默认为:http://crimeflare.net:83/domains

  • curl_timeout - 获取每个文件的超时时间。

  • pdo - PDO对象设置的数组

    • pdo: host - mysql服务器的IP或域名
    • pdo: db - 数据库名称
    • pdo: user - mysql用户的用户名
    • pdo: pass - 该用户的密码
    • pdo: charset - 连接到数据库时使用的字符集
    • pdo: timeout - PDO超时时间(秒)。
  • crimeflare - 每个Crimeflare数据文件的值数组。以下是对ipout.zip的示例。

键是不包含任何前缀或后缀的文件名。以下是一个示例

  • ipout - 此文件的选项数组
    • ipout: file - 不包含任何前缀或后缀的文件名。对于识别和创建文件和表很重要。
    • ipout: uri - 不包含实际文件名的文件URL。不要有尾随斜杠。
      • ipout: sql - SQL和数据文件解析的设置数组
      • ipout: sql: table - 用于此文件数据的表名。建议使用前缀,因为表将被删除和创建。
      • ipout: sql: fields - 字段数组。每行以空格字符分割。此处顺序重要。索引0是行左侧最远的数据。
        • ipout: sql: fields: updated_at - 创建表时使用的第一个列名和对应的数据类型
        • ipout: sql: fields: domain - 创建表时使用的第二个列名和对应的数据类型
        • ipout: sql: fields: ip_address - 创建表时使用的第三个列名和对应的数据类型

注意

默认情况下,每张表的插入操作以20000条记录为一组进行。如果你的数据库可以处理更多的参数绑定,则在使用更新方法之前,根据以下公式设置新的整数限制:数据库绑定限制 / 字段数量

$crime->setBindingLimit(50000);
$crime->update();

将PDO分离出来,以便在需要时提供自己的PDO。更改 src/Crimeflare.php 中的use语句。

use \DbUpdate;