The color codes for the Network tool:
Firefox
pink - DNS lookup
orange - connecting
dark slate-blue - waiting
green - receiving
Chrome
Connecting
white with pale grey outline - queuing
grey - stalled - waiting before it could be sent, incl time spent in proxy negotiation. + while browser waits for one of Chrome's max. 6 connections per location to become available for re-use
orange - establish connection, including TCP handshakes/retries and negotiating a SSL
Request/response
green - request sent issuing the network request. Typically a fraction of a millisecond.
green - waiting - Time to First Byte (TTFB) - incl the latency of a round trip to the server in addition to the time spent waiting for the server to deliver the response
blue - content download - Time spent receiving the response data
Tipsy Tricksy Development
Sunday, 25 October 2015
Saturday, 24 October 2015
Virtual hosts on LightTPD
Virtual hosts on LightTPD
http://www.cyberciti.biz/tips/howto-lighttpd-web-server-setting-up-virtual-hosting.html
http://www.cyberciti.biz/tips/howto-lighttpd-web-server-setting-up-virtual-hosting.html
LightTPD optional modules
"mod_access",
# The access module is used to deny access to files.
Options
url.access-deny
Denies access to all files with any of given trailing path names.
Default value:empty
access.deny-all
Denies access to all files.
Note: access.deny-all should be used with a conditional to limit it (only from lighty 1.5x)
-----
"mod_accesslog",
accesslog.filename
name of the file where the accesslog should be written to if syslog is not used.
# "mod_cgi",
# The access module is used to deny access to files.
Options
url.access-deny
Denies access to all files with any of given trailing path names.
Default value:empty
access.deny-all
Denies access to all files.
Note: access.deny-all should be used with a conditional to limit it (only from lighty 1.5x)
-----
"mod_accesslog",
accesslog.filename
name of the file where the accesslog should be written to if syslog is not used.
if the name starts with a '|' the rest of the name is taken as the name of a process which will be spawned and will get the output
e.g.:
accesslog.filename = "/var/log/lighttpd.log" $HTTP["host"] == "mail.example.org" { accesslog.filename = "|/usr/bin/cronolog" }
if you have multiple workers on 1.4.x (now, the current version) and want all access logs to be written (without that, only one worker will write logs), use accesslog.filename = "\|/usr/sbin/cronolog.."
Default: disabled
"mod_alias"
The alias module is used to specify a special document-root for a given url-subset.
e.g
The alias module is used to specify a special document-root for a given url-subset.
e.g
alias.url = ( "/cgi-bin/" => "/var/www/servers/www.example.org/cgi-bin/" )and additional locations can be added
alias.url += ( "/content" => "/var/www/servers/www.somecontent.org/" )
Trailing slashes are stripped from the url before matching an alias.
i.e. the alias "/content/ => "/dirtocontent/" will not match the url "/content/";
it matches only something like "/content/somefile" or "/content/somesubdir/".
So in most cases you shouldn't use a trailing slash on the left side,
but DO use it on the right side!):
e.g. "/content" => "/dirtocontent/"
Now
"/content_x1/" is mapped to "/dirtocontent/_x1",
"/content/" -> "/dirtocontent/" and
"/content/somefile" -> "/dirtocontent//somefile" (yes, double slash).
If you don't use it on the right side too,
"/content_x1/" is mapped to "/dirtocontent_x1"
which you probably don't want.
alias.url = (
"/aa" => "/domain_aa_site/"
"/somewhere/else" => "/other/docroot/"
)
# "mod_auth",
# "mod_cgi",
# "mod_cml",
# "mod_compress",
# "mod_evasive",
# "mod_evhost",
# "mod_expire",
# "mod_extforward",
# "mod_fastcgi",
# "mod_flv_streaming",
# "mod_magnet",
# "mod_mysql_vhost",
# "mod_proxy",
# "mod_redirect",
# "mod_rewrite",
# "mod_rrdtool",
# "mod_scgi",
# "mod_secdownload",
# "mod_setenv",
# "mod_simple_vhost",
# "mod_ssi",
"mod_status",
# "mod_trigger_b4_dl",
# "mod_userdir",
# "mod_usertrack",
# "mod_webdav"
Configuring LightTPD for Windows 7 - part 1 - File locations and port
Part 1a - File Locations
Stored in
<install directory>/conf/lighttpd.conf
in the server.document-root property
Stored in
<install directory>/conf/lighttpd.conf
in the server.document-root property
e.g.
server.document-root = "/var/www/servers/www.example.org/pages/"or
server.document-root = server_root + "/htdocs"Key thing: the files do not need to be stored in a sub-directory of the web-server's install directory.
Part 1b - Server Port
server.port = 3000
or
## bind to port (default: 80)
#server.port = 80
Starting and stopping LightTPD on Windows 7
I've just done some testing with Mongoose web server on my PC.
Mongoose was taking between 600ms and 6 secsonds to serve a PHP page.
I think it's time to get something faster.
Or at least, to check to see if there is anything faster I can run on my PC.
First up LightTPD
Simply copy the contents of LightTPD.zip somewhere on your PC.
Double-click on LightTPD.exe to start it up.
Ctrl-c in the running shell window to stop it.
LightTPD is serving it's static html default home page in 22ms. Potentially much faster than Mongoose.
Next steps:
How to configure LightTPD to access teh html files to serve
How to configure LightTPD to serve multiple virtual hosts
How to configure LightTPD to serve PHP
Measure the speed difference
Mongoose was taking between 600ms and 6 secsonds to serve a PHP page.
I think it's time to get something faster.
Or at least, to check to see if there is anything faster I can run on my PC.
First up LightTPD
Simply copy the contents of LightTPD.zip somewhere on your PC.
Double-click on LightTPD.exe to start it up.
Ctrl-c in the running shell window to stop it.
LightTPD is serving it's static html default home page in 22ms. Potentially much faster than Mongoose.
Next steps:
How to configure LightTPD to access teh html files to serve
How to configure LightTPD to serve multiple virtual hosts
How to configure LightTPD to serve PHP
Measure the speed difference
Returning to Mercurial
The way I use it:
The green tick is the screen that shows what differences have been made since last commit
The two arrows chasing their tail is the screen that lets you set where a repository looks for pushes and pulls
The green tick is the screen that shows what differences have been made since last commit
The two arrows chasing their tail is the screen that lets you set where a repository looks for pushes and pulls
Tuesday, 6 January 2015
Accessing a SQLite database table from PHP 5.4 upwards
Text in Courier is code to be typed literally
Text in Arial should be substituted for your own values
<?php
try {
$file = 'path/to/sqlfile.sl3'; // relative to the directory the php is in
$db = new PDO('sqlite:' . $file); // new php db object, *not* a new db
}
catch(PDOException $pe) {
echo $pe->getMessage();
exit(0);
}
try {
$result = $db->query('SELECT field1,field2,field3,etc FROM table');
echo '<table>' . "\r\n";
echo "<tr><th>field1 name</th><th>field2 name</th><th>field3 name</th></tr>\n";
foreach ( $result as $row ) {
echo "<tr><td>" . $row['field1'] . "</td>" .
"<td>" . $row['field2'] . "</td>" .
"<td>" . $row['field3'] . "</td>" .
"</tr>\r\n";
}
echo '</table>' . "\r\n";
}
catch(PDOException $pe) {
echo $pe->getMessage();
exit(0);
}
?>
Text in Arial should be substituted for your own values
<?php
try {
$file = 'path/to/sqlfile.sl3'; // relative to the directory the php is in
$db = new PDO('sqlite:' . $file); // new php db object, *not* a new db
}
catch(PDOException $pe) {
echo $pe->getMessage();
exit(0);
}
try {
$result = $db->query('SELECT field1,field2,field3,etc FROM table');
echo '<table>' . "\r\n";
echo "<tr><th>field1 name</th><th>field2 name</th><th>field3 name</th></tr>\n";
foreach ( $result as $row ) {
echo "<tr><td>" . $row['field1'] . "</td>" .
"<td>" . $row['field2'] . "</td>" .
"<td>" . $row['field3'] . "</td>" .
"</tr>\r\n";
}
echo '</table>' . "\r\n";
}
catch(PDOException $pe) {
echo $pe->getMessage();
exit(0);
}
?>
Subscribe to:
Posts (Atom)