<?php
set_time_limit(200000);
ignore_user_abort(1);
/* config */
define('STRINGS_COUNT', 30);
define('QUERY_URL', 'http://site.com/test.php?id1=%file1%&id2=%file2%');
define('QUERY_TIMEOUT', 5);
/* end.config */
#ini_set('display_errors', 1);
while(true){ /* general loop */
if(file_exists(dirname(__FILE__).'/stop.txt')){
die('Stopped by stop.txt');
}
$file1 = @file(dirname(__FILE__).'/file1.txt');
$file2 = fopen(dirname(__FILE__).'/file2.txt', "r");
$file2tmp = fopen(dirname(__FILE__).'/tmp.txt', "w");
$file1Strings = array();
$file2Strings = array();
/* strings select */
for($i=0; $i<STRINGS_COUNT; $i++){
$file1string = array_shift($file1);
$file2string = trim(fgets($file2, 2048));
if(!empty($file1) && !feof($file2)){
if(!empty($file1string) && !empty($file1string)){
$file1Strings[$i] = trim($file1string);
$file2Strings[$i] = $file2string;
}
}else{
break;
}
}
if(empty($file1Strings) || empty($file2Strings)){
@unlink(dirname(__FILE__).'/tmp.txt');
die('No strings for work');
}
/* end.strings select */
/* rewtire file1 */
for($i2=0; $i2<STRINGS_COUNT; $i2++){
array_push($file1, $file1Strings[$i2]."\n");
}
@file_put_contents(dirname(__FILE__).'/file1.txt', implode($file1));
/* end.rewtire file1 */
/* rewtire file2 */
while(!feof($file2)) {
fwrite($file2tmp, fgets($file2, 2048));
}
@rename(dirname(__FILE__).'/tmp.txt', dirname(__FILE__).'/file2.txt');
/* end.rewtire file2 */
/* fhandlers close */
fclose($file2);
fclose($file2tmp);
/* end.fhandlers close */
$rtasks = array();
$wtasks = array();
$host = parse_url(QUERY_URL, PHP_URL_HOST);
if($host){
/* cockets create */
for($i3=0; $i3<STRINGS_COUNT; $i3++){
if(!empty($file1Strings[$i3]) && !empty($file2Strings[$i3])){
$url = str_replace('%file1%', urlencode($file1Strings[$i3]), QUERY_URL);
$url = str_replace('%file2%', urlencode($file2Strings[$i3]), $url);
$sh = stream_socket_client($host.':80', $errno, $errstr, QUERY_TIMEOUT, STREAM_CLIENT_ASYNC_CONNECT|STREAM_CLIENT_CONNECT);
if($sh){
stream_set_blocking($sh, 0);
stream_set_timeout($sh, QUERY_TIMEOUT);
$wtasks['handlers'][$url] = $sh;
}
}
}
/* end.cockets create */
while($wtasks['handlers'] || $rtasks){
$rtasks_ = $rtasks;
$wtasks_ = $wtasks['handlers'];
$n = stream_select($rtasks_, $wtasks_, $e, QUERY_TIMEOUT);
if($n > 0){
/* read data from socket */
foreach($rtasks_ as $sh){
$url = array_search($sh, $rtasks);
if($url){
/* uncomment to get result
$result = '';
while ($r = fread($sh, 2048)){
$result .= $r;
}
*/
fclose($sh);
unset($rtasks[$url]);
}
}
/* end.read data from socket */
/* write data to socket */
foreach($wtasks_ as $u => $sh){
$url = array_search($sh, $wtasks['handlers']);
if($url){
$headers = "GET $url HTTP/1.0\r\n";
$headers .= "\r\n";
if($sh){
if (fwrite($sh, $headers) === false){
fclose($sh);
}
$rtasks[$url] = $sh;
unset($wtasks['handlers'][$url]);
}
}
}
/* end.write data to socket */
}else{
break;
}
}
}else{
die('Incorrect Query Url');
}
} /* end.general loop */
?>