<?php

ini_set( 'max_execution_time', 2 );
echo "max_execution_time: " . ini_get( 'max_execution_time' ) . "\n";


function elementOpen( $parser, $name, $attribs ) {
	print "<$name>";
}

function elementClose( $parser, $name ) {
	print "</$name>";
}

function elementData( $parser, $data ) {
	print "$data";
}

$parser = xml_parser_create_ns( 'UTF-8' );

/*
xml_set_element_handler(
	$parser,
	'elementOpen',
	'elementClose'
);

xml_set_character_data_handler( $parser, 'elementData' );
*/

$chunk = <<<EOT
<?xml version="1.0"?>
<!DOCTYPE lolz [
    <!ENTITY lol "lol">
    <!ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
    <!ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;">
    <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">
    <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;">
    <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;">
    <!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;">
    <!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;">
    <!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;">
    <!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;">
]>
<lolz>&lol9;</lolz>
EOT;

$time_start = microtime( true );
$ret = xml_parse( $parser, $chunk );
if ( $ret == 0 ) {
	xml_parser_free( $parser );
	die ("malformed\n" );
}
print "\n\nDone in " . ( microtime( true ) - $time_start ) . " secs\n";
xml_parser_free( $parser );
