<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ivan Villareal</title>
	<atom:link href="http://blog.ivanvillareal.info/tag/daemon/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.ivanvillareal.info</link>
	<description>IT stuff and more...</description>
	<lastBuildDate>Fri, 13 Aug 2010 23:05:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Automated Capture of Webpages (Main Process)</title>
		<link>http://blog.ivanvillareal.info/linux/automated-capture-of-webpages-main-process/</link>
		<comments>http://blog.ivanvillareal.info/linux/automated-capture-of-webpages-main-process/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 00:21:45 +0000</pubDate>
		<dc:creator>Ivan Villareal</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[architechture]]></category>
		<category><![CDATA[daemon]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[xvfb]]></category>
		<category><![CDATA[Zend_Json]]></category>

		<guid isPermaLink="false">http://blog.ivanvillareal.info/?p=25</guid>
		<description><![CDATA[This post is the continuation of &#160;Xvfb and Firefox headless screenshot generator&#160;were I explained how Xvfb and Firefox can be used to get a screenshot of any web resource supported by firefox.
The next challenge I had, involved the creation of an automated process that could be called from the web or from a cron job, [...]]]></description>
			<content:encoded><![CDATA[<p>This post is the continuation of &nbsp;<strong><a title="Xvfb and Firefox headless screenshot generator" href="http://blog.ivanvillareal.info/linux/xvfb-and-firefox-headles-screenshot-generator/">Xvfb and Firefox headless screenshot generator</a>&nbsp;</strong>were I explained how Xvfb and Firefox can be used to get a screenshot of any web resource supported by firefox.</p>
<p>The next challenge I had, involved the creation of an automated process that could be called from the web or from a cron job, this process job would take a list of sites that need to be captured, and it will save its shots with their respective thumbnail somewhere, also this same process had to&nbsp;communicate&nbsp;somehow with the&nbsp;front end, to inform the user about the status.</p>
<p>So I&#8217;ve planned the&nbsp;architecture&nbsp;for this solution in a modular way</p>
<ul>
<li>A daemon checking if new jobs were sent.</li>
<li>The main process that takes some parameters including the site list and save the generated screenshots somewhere.</li>
<li>A logger facility to&nbsp;communicate&nbsp;with an external process.</li>
<li>A web application to take the site list and show the results.</li>
</ul>
<p>This is the&nbsp;architecture&nbsp;diagram:</p>
<div id="attachment_28" class="wp-caption aligncenter" style="width: 727px"><a href="http://blog.ivanvillareal.info/wp-content/uploads/2009/09/screen_grabber_system_arquitechture1.png"><img class="size-large wp-image-28 " title="Screen Grabber System Arquitechture" src="http://blog.ivanvillareal.info/wp-content/uploads/2009/09/screen_grabber_system_arquitechture1-717x1024.png" alt="Screen Grabber System Arquitechture" width="717" height="1024" /></a><p class="wp-caption-text">Screen Grabber System Arquitechture</p></div>
<p>From the above modules, I will describe briefly the Main process, this main process started as a simple bash script but this wasn&#8217;t sufficient for&nbsp;scalability and security standpoints, so I&#8217;ve decided to make it in perl.</p>
<p>&nbsp;</p>
<p>The current version has changed a lot, but I will describe the main aspects of this script:</p>
<p>The following CPAN extensions were used in this module:</p>
<ul>
<li><a title="Run - Perl extension for to start programs in background" href="http://search.cpan.org/~ilyaz/Run-0.03/Run.pm" target="_blank">Run</a></li>
<li><a title="DBI - Database independent interface for Perl" href="http://search.cpan.org/~timb/DBI-1.609/DBI.pm" target="_blank">DBI</a></li>
<li><a title="File::Basename - Parse file paths into directory, filename and suffix." href="http://search.cpan.org/~dapm/perl-5.10.1/lib/File/Basename.pm" target="_blank">File::Basename</a></li>
<li><span style="text-decoration: line-through;"><a title="Perl implementation of PHP's native serialize(), unserialize() [Used at first to comunicate with PHP frontend, now the comunication is done trough the db]" href="http://hurring.com/code/perl/serialize/" target="_blank">Serialize</a></span></li>
</ul>
<p>This process receives the following arguments:</p>
<ol>
<li>The path to a file where the list of urls are, the filename represents the job name and this file must contain 1 url per line <span style="color: #ff0000;">(Required)</span></li>
<li><span style="color: #ff0000;"><span style="color: #000000;">The number of seconds that firefox will have to render each url <span style="color: #3366ff;">(Optional)</span></span></span></li>
</ol>
<p>After the main process is called, either by a daemon or by a cron job, it will connect to a database and search the job based on the received parameter, this job needs to be inserted with an API I did in php, this API is called from the frontend and the cron jobs as well and it serves as a glue point between everything.</p>
<p>After the update is done, I prepare the environment for Xvfb and spawn a new Virtual Screen with its corresponding firefox instance:</p>
<p>This is the code used:</p>
<p><span style="font-family: monospace;"><!--DEVFMTCODE--><pre class="devcodeblock" title="Perl"><div class="devcodeoverflow">
<span style="color: #000000; font-weight: bold;">sub</span> initialize <span style="color: #009900;">&#123;</span>
    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;======= Process Starting ==========&quot;</span><span style="color: #339933;">,</span> 1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$numArgs</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$#ARGV</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$numArgs</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Bad number of parameters&quot;</span><span style="color: #339933;">,</span> 1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;Bad Number of params <span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000066;">chomp</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$siteList</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$ARGV</span><span style="color: #009900;">&#91;</span>0<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$numArgs</span> <span style="color: #339933;">&gt;</span> 2<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066;">chomp</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$renderTime</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$ARGV</span><span style="color: #009900;">&#91;</span>2<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$jobName</span><span style="color: #339933;">,</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$dirName</span><span style="color: #339933;">,</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$fileExtension</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> fileparse<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$siteList</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'\.processing'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Parameters received <span style="color: #000099; font-weight: bold;">\n</span>SiteList: $siteList<span style="color: #000099; font-weight: bold;">\n</span>Related Domain:$relatedDomain<span style="color: #000099; font-weight: bold;">\n</span>Render Time: $renderTime&quot;</span><span style="color: #339933;">,</span>1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Initializing Db&quot;</span><span style="color: #339933;">,</span>3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">$dsn</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;DBI:mysql:database=$db{'name'};host=$db{'host'};port=$db{'port'}&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">$dbh</span> <span style="color: #339933;">=</span> DBI<span style="color: #339933;">-&gt;</span><span style="color: #006600;">connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$dsn</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$db</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'user'</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$db</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'pass'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'failed to connect'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$jobRow</span> <span style="color: #339933;">=</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$domain</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$dbh</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">selectrow_hashref</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;SELECT idJobs FROM jobs WHERE jobName = ?&quot;</span><span style="color: #339933;">,</span><span style="color: #000066;">undef</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$jobName</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">$jobId</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$jobRow</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'idJobs'</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$result</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$dbh</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">do</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;UPDATE jobs SET dateStarted = CURRENT_TIMESTAMP WHERE jobName = ?&quot;</span><span style="color: #339933;">,</span><span style="color: #000066;">undef</span><span style="color: #339933;">,</span><span style="color: #0000ff;">$jobName</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Conected to Db $db{'name'}&quot;</span><span style="color: #339933;">,</span>1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    jobUpdate<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Starting capture process...&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">$ENV</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'DISPLAY'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span><span style="color: #ff0000;">':1'</span><span style="color: #339933;">;</span>
    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Starting virtual screen...&quot;</span><span style="color: #339933;">,</span>3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">$pid</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'xvfb'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> spawn <span style="color: #0000ff;">$xvfbBin</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">':1'</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">'-screen'</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">'0'</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">'1024x768x24'</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;Xvfb failed to start $!&quot;</span><span style="color: #339933;">;</span>
    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Xvfb Pid: $pid{'xvfb'} &quot;</span><span style="color: #339933;">,</span>3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">$pid</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'ratpoison'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> spawn <span style="color: #ff0000;">'ratpoison'</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;spawn ratpoison failed&quot;</span><span style="color: #339933;">;</span>
    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Ratpoison Pid: $pid{'ratpoison'} &quot;</span><span style="color: #339933;">,</span>3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">sleep</span><span style="color: #009900;">&#40;</span>1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">$pid</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'firefox'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> spawn <span style="color: #0000ff;">$ffBin</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">'-width 1024'</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">'-height 768'</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;spawn $!&quot;</span><span style="color: #339933;">;</span>
    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Firefox Process Id: $pid{'firefox'}&quot;</span><span style="color: #339933;">,</span>1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">sleep</span><span style="color: #009900;">&#40;</span>5<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;---Initialize sub end here---&quot;</span><span style="color: #339933;">,</span>4<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066;">return</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
</div></pre><!--END_DEVFMTCODE--><br />
</span></p>
<p>After the initialization I proceed to read the list of files to start capturing each one, this is the code that does exactly that:</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="Perl"><div class="devcodeoverflow"> 
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #009999;">&lt;FILE&gt;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$site</span>    <span style="color: #339933;">=</span> <span style="color: #0000ff;">$_</span><span style="color: #339933;">;</span>
 <span style="color: #000066;">chop</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$site</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #666666; font-style: italic;">##</span>
 <span style="color: #666666; font-style: italic;"># Validate that the line starts with http or https</span>
 <span style="color: #666666; font-style: italic;">##</span>
 <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$site</span> <span style="color: #339933;">=~</span> <span style="color: #000066;">m</span><span style="color: #339933;">!</span><span style="color: #0000ff;">\b</span><span style="color: #009900;">&#40;</span>https<span style="color: #339933;">?</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">://!</span>i<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Processing: $site&quot;</span><span style="color: #339933;">,</span>4<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    captureSite<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$site</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$relatedDomainId</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Sites Processed&quot;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">$stats</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'processed'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">.</span><span style="color: #ff0000;">&quot;=&quot;</span><span style="color: #339933;">.</span> <span style="color: #0000ff;">$stats</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'succesfull'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">.</span><span style="color: #ff0000;">&quot;+&quot;</span><span style="color: #339933;">.</span> <span style="color: #0000ff;">$stats</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'failed'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">.</span><span style="color: #ff0000;">&quot;+&quot;</span><span style="color: #339933;">.</span> <span style="color: #0000ff;">$stats</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'unrendered'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">.</span><span style="color: #ff0000;">&quot;entre &quot;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">$stats</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'siteCount'</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">$stats</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'percentage'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$stats</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'processed'</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">/</span><span style="color: #0000ff;">$stats</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'siteCount'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span><span style="color: #cc66cc;">100</span><span style="color: #339933;">;</span>
    updateStatus<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'stats'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">\%stats</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
 <span style="color: #009900;">&#125;</span></div></pre><!--END_DEVFMTCODE--></p>
<p>And the captureSite sub is where the magic is, here it is:</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="Perl"><div class="devcodeoverflow">
<span style="color: #000000; font-weight: bold;">sub</span> captureSite <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$site</span>          <span style="color: #339933;">=</span> <span style="color: #000066;">shift</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$result</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$imgName</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$imageStatus</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">''</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$fileNameExit</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$imgCounter</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$imgFullName</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$thumbFile</span><span style="color: #339933;">;</span>
&nbsp;
    updateStatus<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'status'</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Processing $site&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    jobUpdate<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Processing $site&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Starting to capture: $site&quot;</span><span style="color: #339933;">,</span>2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">##</span>
<span style="color: #666666; font-style: italic;"># Check the domain for valid parts</span>
<span style="color: #666666; font-style: italic;">##</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@domainParts</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$site</span> <span style="color: #339933;">=~</span> <span style="color: #009966; font-style: italic;">m/\b((?#protocol)https?|ftp):\/\/((?#domain)[-A-Z0-9.]+)((?#file)\/[-A-Z0-9+&amp;@#\/%=~_|!:,.;]*)?((?#parameters)\?[-A-Z0-9+&amp;@#\/%=~_|!:,.;]*)?/ig</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$domainParts</span><span style="color: #009900;">&#91;</span>0<span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #0000ff;">$domainParts</span><span style="color: #009900;">&#91;</span>1<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$openedTabs</span> <span style="color: #339933;">&gt;</span> <span style="color: #0000ff;">$maximumTabs</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Maximum Number of Opened Tabs Reached Killing Firefox pid $pid{'firefox'}&quot;</span><span style="color: #339933;">,</span>3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000066;">kill</span> 0<span style="color: #339933;">,</span> <span style="color: #0000ff;">$pid</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'firefox'</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
            <span style="color: #000066;">sleep</span><span style="color: #009900;">&#40;</span>2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #0000ff;">$pid</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'firefox'</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> spawn <span style="color: #0000ff;">$ffBin</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">'-width 1024'</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">'-height 768'</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;spawn $!&quot;</span><span style="color: #339933;">;</span>
            logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;New Firefox Process Id: $pid{'firefox'}&quot;</span><span style="color: #339933;">,</span>1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000066;">sleep</span><span style="color: #009900;">&#40;</span>3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #0000ff;">$openedTabs</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
<span style="color: #666666; font-style: italic;">#because ff is tabless the old page doesn't disappear until</span>
<span style="color: #666666; font-style: italic;">#all content is loaded, so I should remove content first.</span>
        <span style="color: #0000ff;">$cmd</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$ffBin</span> <span style="color: #339933;">.</span> <span style="color: #ff0000;">' -remote &quot;openUrl(http://localhost/blank.html)&quot;'</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$res</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">`$cmd`</span><span style="color: #339933;">;</span>
        <span style="color: #000066;">sleep</span><span style="color: #009900;">&#40;</span>1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #0000ff;">$cmd</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$ffBin</span> <span style="color: #339933;">.</span> <span style="color: #ff0000;">' -remote &quot;openUrl('</span><span style="color: #339933;">.</span><span style="color: #0000ff;">$site</span><span style="color: #339933;">.</span><span style="color: #ff0000;">')&quot;'</span><span style="color: #339933;">;</span>
        logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Opening $site&quot;</span><span style="color: #339933;">,</span>1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        logThis<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$cmd</span><span style="color: #339933;">,</span> 3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #0000ff;">$res</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">`$cmd`</span><span style="color: #339933;">;</span>
        <span style="color: #0000ff;">$openedTabs</span><span style="color: #339933;">++;</span>
        logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Waiting $renderTime seconds to allow page rendering&quot;</span><span style="color: #339933;">,</span>3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000066;">sleep</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$renderTime</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">##</span>
<span style="color: #666666; font-style: italic;"># We remove harmfull charachters</span>
<span style="color: #666666; font-style: italic;"># maybe an md5sum would be better, because</span>
<span style="color: #666666; font-style: italic;"># we would always have the same number of chars</span>
<span style="color: #666666; font-style: italic;">##</span>
        <span style="color: #0000ff;">$imgName</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$site</span><span style="color: #339933;">;</span>
        <span style="color: #0000ff;">$imgName</span> <span style="color: #339933;">=~</span> <span style="color: #000066;">s</span><span style="color: #339933;">!</span><span style="color: #0000ff;">\b</span><span style="color: #009900;">&#40;</span>https<span style="color: #339933;">?</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">://|</span><span style="color: #009900;">&#40;</span>www\<span style="color: #339933;">.</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">!!</span>g<span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">#removes http://www</span>
            <span style="color: #0000ff;">$imgName</span> <span style="color: #339933;">=~</span> <span style="color: #000066;">s</span><span style="color: #339933;">!</span>\<span style="color: #339933;">/|</span>\<span style="color: #666666; font-style: italic;">#|\?$!!g; #removes \ # ? from the end</span>
            <span style="color: #0000ff;">$imgName</span> <span style="color: #339933;">=~</span> <span style="color: #000066;">s</span><span style="color: #339933;">!</span><span style="color: #009900;">&#91;</span><span style="color: #339933;">^</span>0<span style="color: #339933;">-</span>9<span style="color: #339933;">^</span>A<span style="color: #339933;">-</span>Z<span style="color: #339933;">^</span>a<span style="color: #339933;">-</span>z<span style="color: #339933;">^</span>_<span style="color: #339933;">^.</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">!</span>_<span style="color: #339933;">!</span>g<span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">#cut excessive large filenames</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000066;">length</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$imgName</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;</span> <span style="color: #0000ff;">$maxFileNameLength</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #0000ff;">$imgName</span> <span style="color: #339933;">=</span> <span style="color: #000066;">substr</span> <span style="color: #0000ff;">$imgName</span><span style="color: #339933;">,</span> 0<span style="color: #339933;">,</span> <span style="color: #0000ff;">$maxFileNameLength</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$baseImgName</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$imgName</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #0000ff;">$fileNameExit</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #0000ff;">$imgFullName</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$saveDir</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">$imgName</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">$saveFormat</span><span style="color: #339933;">;</span>
            <span style="color: #0000ff;">$thumbFile</span>   <span style="color: #339933;">=</span> <span style="color: #0000ff;">$thumbsDir</span> <span style="color: #339933;">.</span> <span style="color: #ff0000;">'thumb_'</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">$imgName</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">$saveFormat</span><span style="color: #339933;">;</span>
            logThis<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$imgFullName</span><span style="color: #339933;">,</span>1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Cecking if image already exists&quot;</span><span style="color: #339933;">,</span>1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span>e <span style="color: #0000ff;">$imgFullName</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #0000ff;">$imgCounter</span><span style="color: #339933;">++;</span>
                <span style="color: #0000ff;">$imgName</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$baseImgName</span> <span style="color: #339933;">.</span> <span style="color: #ff0000;">'_'</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">$imgCounter</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #0000ff;">$fileNameExit</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
<span style="color: #666666; font-style: italic;">#creating the screenshot</span>
        <span style="color: #0000ff;">$cmd</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">'import -window root '</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">$imgFullName</span><span style="color: #339933;">;</span>
        logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Command: &quot;</span> <span style="color: #339933;">.</span><span style="color: #0000ff;">$cmd</span><span style="color: #339933;">,</span> 3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #0000ff;">$res</span>   <span style="color: #339933;">=</span> <span style="color: #ff0000;">`$cmd`</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span>e <span style="color: #0000ff;">$imgFullName</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;The image $imgFullName was created succesfully&quot;</span><span style="color: #339933;">,</span>1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #0000ff;">$imageStatus</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">'success'</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$fileSize</span> <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #000066;">s</span> <span style="color: #0000ff;">$imgFullName</span><span style="color: #339933;">;</span>
            logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;File Size for image created: $fileSize&quot;</span><span style="color: #339933;">,</span>1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;"># Check the filesize, if its to low wait give more time to render the page</span>
            <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$fileSize</span> <span style="color: #339933;">&lt;=</span> <span style="color: #0000ff;">$minFileSize</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;File is too small, I think the page has not finished rendering, giving it more time...&quot;</span><span style="color: #339933;">,</span>2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$exit</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$try</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
                <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #0000ff;">$exit</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Giving the page $renderTime more seconds to render...&quot;</span><span style="color: #339933;">,</span>2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    updateStatus<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'status'</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Giving $site more time to render...&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    <span style="color: #000066;">sleep</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$renderTime</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Command: &quot;</span> <span style="color: #339933;">.</span><span style="color: #0000ff;">$cmd</span><span style="color: #339933;">,</span> 3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    <span style="color: #0000ff;">$res</span>   <span style="color: #339933;">=</span> <span style="color: #ff0000;">`$cmd`</span><span style="color: #339933;">;</span>
                    <span style="color: #0000ff;">$fileSize</span> <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #000066;">s</span> <span style="color: #0000ff;">$imgFullName</span><span style="color: #339933;">;</span>
                    logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;File Size for image created: $fileSize&quot;</span><span style="color: #339933;">,</span>1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$fileSize</span> <span style="color: #339933;">&gt;</span> <span style="color: #0000ff;">$minFileSize</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                        <span style="color: #0000ff;">$exit</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
                        <span style="color: #0000ff;">$imageStatus</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">'success'</span><span style="color: #339933;">;</span>
                    <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
                        <span style="color: #0000ff;">$try</span><span style="color: #339933;">++;</span>
                    <span style="color: #009900;">&#125;</span>
                    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$try</span> <span style="color: #339933;">&gt;</span> 3 <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                        <span style="color: #0000ff;">$exit</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
                        <span style="color: #0000ff;">$imageStatus</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">'failed'</span><span style="color: #339933;">;</span>
                    <span style="color: #009900;">&#125;</span>
                <span style="color: #009900;">&#125;</span>
            <span style="color: #009900;">&#125;</span>
            logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Croping image...&quot;</span><span style="color: #339933;">,</span>1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #0000ff;">$cmd</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;convert $imgFullName -crop '1024x768+0+24' $imgFullName&quot;</span><span style="color: #339933;">;</span>
            <span style="color: #0000ff;">$res</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">`$cmd`</span><span style="color: #339933;">;</span>
&nbsp;
            logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Creating Thumbnail in $thumbFile&quot;</span><span style="color: #339933;">,</span>1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #0000ff;">$cmd</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;convert $imgFullName -resize '170x128' $thumbFile&quot;</span><span style="color: #339933;">;</span>
            <span style="color: #0000ff;">$res</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">`$cmd`</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">%image</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>
                    site   <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$site</span><span style="color: #339933;">,</span>
                    image  <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$imgFullName</span><span style="color: #339933;">,</span>
                    thumb  <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$thumbFile</span><span style="color: #339933;">,</span>
                    status <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$imageStatus</span><span style="color: #339933;">,</span>
                    <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000066;">push</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">@images</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">\%image</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            insertImage<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$site</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$imgFullName</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$thumbFile</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$relatedDomainId</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$imageStatus</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$imageStatus</span> <span style="color: #b1b100;">eq</span> <span style="color: #ff0000;">'success'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #0000ff;">$stats</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'succesfull'</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">++;</span>
            <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #0000ff;">$stats</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'failed'</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">++;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
            logThis<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Fail creating the image&quot;</span><span style="color: #339933;">,</span>1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #0000ff;">$stats</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'unrendered'</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">++;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #0000ff;">$stats</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'unrendered'</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">++;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #0000ff;">$stats</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'processed'</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">++;</span>
    jobUpdate<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Finished processing $site&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
</div></pre><!--END_DEVFMTCODE--></p>
<p>As you can see I&#8217;m updating the job status in the <strong>jobUpdate</strong> sub, also there are other subs to take care of &nbsp;inserting the screenshot info in the db.</p>
<p>When this program ends, it updates the db to let the inform the daemon that is ready to take more jobs.</p>
<p>In the next post I will be providing &nbsp;info on how the frontend works, and what the final results of this implementation ended.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ivanvillareal.info/linux/automated-capture-of-webpages-main-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- www.000webhost.com Analytics Code -->
<script type="text/javascript" src="http://analytics.hosting24.com/count.php"></script>
<noscript><a href="http://www.hosting24.com/"><img src="http://analytics.hosting24.com/count.php" alt="web hosting" /></a></noscript>
<!-- End Of Analytics Code -->
