php可以返回我的$ i的确切值

时间:2014-12-25 17:01:14

标签: php

这是我的代码:

<?php
error_reporting(-1);

ini_set('max_execution_time', 0);
date_default_timezone_set('UTC');
$starttime = date("H:i:s");

$targetsfile = $argv[1];
if(!isset($argv[1])) { echo "[-] Try again...\n"; die(); }



$nodes = array();
$nodes = file("$targetsfile", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

$node_count = count($nodes);

$curl_arr = array();
$master = curl_multi_init();

for($i = 0; $i < $node_count; $i++)
{
    $agent = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; pt-pt) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27";
    $url = $nodes[$i];
    $curl_arr[$i] = curl_init($url);
    curl_setopt($curl_arr[$i], CURLOPT_URL, $url);
    curl_setopt($curl_arr[$i], CURLOPT_USERAGENT, $agent);
    curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl_arr[$i], CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($curl_arr[$i], CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl_arr[$i], CURLOPT_MAXREDIRS, 2);
    curl_setopt($curl_arr[$i], CURLOPT_VERBOSE, false);
    curl_setopt($curl_arr[$i], CURLOPT_TIMEOUT, 3);
    curl_multi_add_handle($master, $curl_arr[$i]);
}

do 
{
    curl_multi_exec($master,$running);
    usleep(5000);
} while($running > 0);

for($i = 0; $i < $node_count; $i++)
{
    $results = curl_multi_getcontent  ( $curl_arr[$i]  );
    #HERE#
}
echo "DONE!\n";
echo "START TIME: $starttime\n";
$endtime = date("H:i:s");
echo "END TIME: $endtime\n";
?>

我尝试使用多卷曲功能抓取多个网站,但我需要获取内容的每个网址的值可以继续构建我的脚本,但它会返回我写的值:

see #HERE# line

我需要为每个$url提供$curl_arr[$i]的确切值,但如果我尝试回显$ curl_arr [$ i]值,则会返回如下值:

Resource id #27Resource id #27Resource id #28Resource id #28DONE!

有机会在我的for循环中返回变量$ url的确切值吗?或者shouild我认为编写整个代码的另一种方法。

1 个答案:

答案 0 :(得分:1)

我想这可以通过curl_getinfo

来实现
$url = curl_getinfo($curl_arr[$i], CURLINFO_EFFECTIVE_URL);