<?php 
 
/* 
 * Usage: php html.php [tagName] 
 * tagName: id, name or empty string 
 * 
*/ 
$xhrAsy = 'xhr.open("POST", "http://localhost/web-analyzer/html/gen_csv.php", true);'; 
 
if(isset($argv[2]) && is_string($argv[2])) { 
    if($argv[2] === 'firefox') { 
        $xhrAsy = 'xhr.open("POST", "http://localhost/web-analyzer/html/gen_csv.php", false);'; 
    } 
} else { 
    die('missing the arguments two: web browser name (chrome/firefox/edge/phantomjs)'); 
} 
 
$base = 2; 
$times = []; 
for($index=0;$index<=16;$index++) { 
    $times[] = pow($base, $index); 
} 
 
$fileNames = [ 
    './measure-chrome-p.csv', 
    './measure-chrome-div.csv', 
    './measure-chrome-span.csv', 
    './measure-chrome-nest-p.csv', 
    './measure-chrome-nest-div.csv', 
    './measure-chrome-nest-span.csv', 
]; 
 
$htmlList = glob('./*.html'); 
foreach($fileNames as $value) { 
    @unlink($value); 
    $fileInfo = pathinfo($value); 
    $tagArr = explode('-', $fileInfo['filename']); 
    if(count($tagArr) === 3) { 
        $tagName = $tagArr[count($tagArr)-1]; 
    } else { 
        $tagName = $tagArr[count($tagArr)-1].'-'.$tagArr[count($tagArr)-2]; 
    } 
    $str = $tagName.'-0,'; 
    foreach($times as $val) { 
        $str .= $tagName.'-'.$val.','; 
    } 
    file_put_contents($value, substr($str, 0, -1).PHP_EOL); 
} 
 
foreach($htmlList as $value) { 
    if(file_exists($value)) { 
        @unlink($value); 
    } 
} 
 
$btnStr = '<button onclick="clickBtn()">click</button>'; 
$html = '<!DOCTYPE html><html><head> 
<meta http-equiv="cache-control" content="max-age=0" /> 
<meta http-equiv="cache-control" content="no-cache" /> 
<meta http-equiv="expires" content="0" /> 
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" /> 
<meta http-equiv="pragma" content="no-cache" /> 
<meta charset="utf-8" />       
<script> 
    document.onreadystatechange = function() { 
        if(document.readyState === "complete") { 
            var renderTime = performance.timing.domComplete - performance.timing.domLoading; 
            console.log(renderTime); 
            var xhr = new XMLHttpRequest(); 
            xhr.onreadystatechange = function() { 
                if(this.readyState == 4 && this.status == 200) { 
                    console.log("The csv file is generated..."); 
                } 
            }; 
 
            '.$xhrAsy.' 
            xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
            xhr.send("render_time=" + renderTime + "&file_name=#_THEFILENAME_#"); 
        } 
    } 
</script> 
</head><body id="the-body">'; 
 
if(isset($argv[1])) { 
    if($argv[1] === 'name') { 
        $tags = [ 
            'p' => [ 
                '<p name="this-name">This is text','</p>' 
            ], 
            'div' => [ 
                '<div name="this-name">This is text','</div>' 
            ], 
            'span' => [ 
                '<span name="this-name">This is text','</span>' 
            ], 
        ]; 
    } else if($argv[1] === 'id') { 
        $tags = [ 
            'p' => [ 
                '<p #_ID_#>This is text','</p>' 
            ], 
            'div' => [ 
                '<div #_ID_#>This is text','</div>' 
            ], 
            'span' => [ 
                '<span #_ID_#>This is text','</span>' 
            ], 
        ]; 
    } else if($argv[1] === 'none') { 
        $tags = [ 
            'p' => [ 
                '<p>This is text','</p>' 
            ], 
            'div' => [ 
                '<div>This is text','</div>' 
            ], 
            'span' => [ 
                '<span>This is text','</span>' 
            ], 
        ]; 
    } else { 
        die('missing arguments one: please specify the type. The possible value is: id/name/none'); 
    } 
} 
 
file_put_contents('measure-0.html', str_replace('#_THEFILENAME_#', 'measure-0.csv', $html).'</body></html>'); 
foreach($times as $len) { 
    $numberLen = $len; 
    foreach($tags as $tagKey => $tagArray) { 
        $tagNest = ''; 
        $endTagNest = ''; 
        $handler = fopen('measure-'.$tagKey.'-'.$len.'.html', 'w+'); 
        $handlerNest = fopen('measure-'.$tagKey.'-nest'.$len.'.html', 'w+'); 
        fputs($handler, str_replace('#_THEFILENAME_#', 'measure-'.$tagKey.'-'.$len, $html)); 
        fputs($handlerNest, str_replace('#_THEFILENAME_#', 'measure-'.$tagKey.'-nest'.$len, $html)); 
        for($index=0;$index<$numberLen;$index++) { 
            if(empty($argv[1]) || $argv[1] !== 'id') { 
                $tagNest .= $tagArray[0]; 
                $tag = $tagArray[0]; 
            } else { 
                $tagNest .= str_replace('#_ID_#', 'tag-'.$index, $tagArray[0]); 
                $tag = str_replace('#_ID_#', 'tag-'.$index, $tagArray[0]); 
            } 
            $endTagNest .= $tagArray[1]; 
            $endTag = $tagArray[1]; 
            fputs($handler, $tag.$endTag); 
        } 
 
        fputs($handler, '</body></html>'); 
        fputs($handlerNest, $tagNest.$endTagNest.'</body></html>'); 
        fclose($handler); 
        fclose($handlerNest); 
    } 
} 
$fileLists = []; 
$fileNames = [ 
    './measure-div-#_NUMBER_#.html', 
    './measure-div-nest#_NUMBER_#.html', 
    './measure-p-#_NUMBER_#.html', 
    './measure-p-nest#_NUMBER_#.html', 
    './measure-span-#_NUMBER_#.html', 
    './measure-span-nest#_NUMBER_#.html', 
]; 
$timeRev = array_reverse($times); 
foreach($fileNames as $value) { 
    foreach($timeRev as $number) { 
        $fileLists[] = str_replace('#_NUMBER_#', (string)$number, $value); 
    } 
} 
$fileLists[] = './measure-0.html'; 
$fileListStr = ''; 
 
foreach($fileLists as $value) { 
    $fileListStr .= 'linkList.push("http://localhost/web-analyzer/html/'.$value.'");'.PHP_EOL; 
} 
 
$evalString = '<!DOCTYPE html> 
<html> 
    <head> 
        <title>evaluate html page</title> 
        <meta http-equiv="cache-control" content="max-age=0" /> 
        <meta http-equiv="cache-control" content="no-cache" /> 
        <meta http-equiv="expires" content="0" /> 
        <meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" /> 
        <meta http-equiv="pragma" content="no-cache" /> 
        <meta charset="utf-8" /> 
        <script> 
            var linkList = []; 
            '.$fileListStr.' 
            var index = 0; 
            document.onreadystatechange = function () { 
                if (document.readyState === "complete") { 
                    var ifr = document.getElementById("this-iframe"); 
                    ifr.src = linkList[index]; 
                    ifr.onload = function() { 
                        index += 1; 
                        if(index === linkList.length) { 
                            ifr.onload = function() { 
                                window.frames[0].stop(); 
                                return; 
                            } 
                            return; 
                        } 
                        ifr.src = linkList[index]; 
                    }; 
                } 
            }; 
        </script> 
    </head> 
    <body> 
        <iframe id="this-iframe" src=""></iframe> 
    </body> 
</html>'; 
file_put_contents('./evaluate.html', $evalString); 
 
 |