Hello
I am trying to code a custom url_rewriter for squid. & also with using some other url_rewriter programs like squidGuard so have to use a wrapper to able use both or any other program.
when i try to loop with php. (that's the way how squid communicates with external programs. STDIN/STDOUT. it gives you a url & you have to send the new one or old one back. )
it has a devastating memory usage even doing nothing. i've changed to wrap it with another bash script it is only a few lines. & it loops instead of php. calls php externally. when php script is done with the url returns it & exits. this way is much more better than instead of to loop the php script.
in php script nearly there is nothing now. (coz i'm still developing it.) it's only replacing video.yahoo.com to youtube.com. and a few variable and an explode() to parse input string that's all... but script is still using huge amount of memory
here is the top output:
PID USER VIRT RES SHR S %CPU %MEM TIME+ COMMAND
32059 squid 19720 7432 4396 R 0.9 2.9 0:00.02 php
32063 squid 19720 7436 4396 R 0.9 2.9 0:00.02 php
32066 squid 19720 7436 4396 R 0.9 2.9 0:00.02 php
32068 squid 19460 6188 3472 R 0.9 2.4 0:00.02 php
32070 squid 19720 7432 4396 R 0.9 2.9 0:00.02 php
32074 squid 19588 6792 3924 R 0.9 2.6 0:00.02 php
32077 squid 19720 7436 4396 R 0.9 2.9 0:00.02 php
here is the PHP script
#!/opt/lampp/bin/php -q
<php
ini_set('html_errors',false);
ini_set('implicit_flush',true);
ini_set('max_execution_time',0);
ini_set('register_argc_argv',true);
$nl="\n"; $tab="\t";
$ds=DIRECTORY_SEPARATOR;
$lamppdir='/opt/lampp/';
$htdocsdir='/opt/lampp/htdocs/';
$wdir='/opt/lampp/htdocs/bin/';
$incdir=$htdocsdir.'inc/';
$logfile=$wdir.'log.txt';
if ($argc>1){
$return=$argv[1];
$return=explode(' ',trim($return));
$url=$return[0];
$sourceip=$return[1];
$user=$return[2];
$method=$return[3];
$urlgroup=$return[4];
$myip=$return[5];
$myport=$return[6];
$logdata=$argv[1];
// if(strlen($logdata)>50){ file_put_contents($logfile,$logdata.$nl,FILE_APPEND); }
fwrite(STDOUT,$return[0]."\r\n");
}
exit(0);
And here is the bash script
#!/bin/bash
lamppdir=/opt/lampp/
phpexecpath=/opt/lampp/bin/php
phpredirectorpath=/opt/lampp/htdocs/bin/redir.php
logdfile=/opt/lampp/htdocs/bin/log.txt
forcedexit=false
while [ "${forcedexit}" != "true" ]
do
read squidinput
phpout=`"${phpexecpath}" "${phpredirectorpath}" "${squidinput}"`
echo "${phpout}"
done
echo "\r\n"
exit 0
i already googled to find any useful documentation about PHP cli & source usage but no luck.
Do you have any advice to decrease source usage ?