大文件切割,访问26wURL地址

需求是将一个192M的文件,将url地址提取出来,然后要访问一遍
1首先将文件按行进行拆分

split -l 2000 data_20210728_071202.txt

2将切分好的文件命名,也可以用shell脚本写一个命名

 #!/bin/bash
 function read_dir(){
i=1
for file in `ls $1` #注意此处这是两个反引号,表示运行系统命令
 do
  if [ -d $1"/"$file ] #注意此处之间一定要加上空格,否则会报错
  then
  read_dir $1"/"$file
  else
  echo $1"/"$file #在此处处理文件即可
  str=".txt"
  mv $1"/"$file $1"/"$i$str
((i++))
  fi
 done
 }
 #读取第一个参数
 read_dir $1

3.php 写了一个循环读取文件请求地址的脚本,执行就行了(小技巧 可以用yield)

set_time_limit(0);
$str = '';
for ($p=18;$p<125;$p++) {
    $logFiles = './test/'.$p.'.txt';
    if (! file_exists($logFiles)) {
        throw new \Exception('日志文件不存在');
    }

    $file = fopen($logFiles, 'r');
    $doneData = [];
    $date = date('YmdHis');
    $i = 0;
    while (! feof($file)) {
        $lineData = fgets($file);
        if ($lineData) {
            $lineData = json_decode($lineData, true);
            $rawLog = $lineData['__raw_log__'];

            $start = strpos($rawLog, '{');
            $end = strpos($rawLog, '}');
            $requestData = substr($rawLog, $start, $end - $start + 1);
            $requestData = $requestData . "}";

            $lineData = json_decode($requestData, true);
            if ($lineData['data']['notifyUrl']) {
                $html = curlUrl($lineData['data']['notifyUrl']);
                $doneLogName = $html ? $p . '_success.txt' : $p . '_fail.txt';
                file_put_contents($doneLogName, $lineData['data']['notifyUrl'] . "\r\n", FILE_APPEND);
                sleep(0.1);
            }
        }
    }
    $str.=$p."finish";
    echo $str;
    fclose($file);
}

function curlUrl($url)
{
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    //设置头文件的信息作为数据流输出
    curl_setopt($curl, CURLOPT_HEADER, 1);
    //设置获取的信息以文件流的形式返回,而不是直接输出。
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec($curl);
    $http_status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
    if ($http_status == 200) {
        return true;
    }
    return false;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mr.杰瑞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值