How to format number of seconds as duration with PHP
A very sophisticated algorithm that will display the length of, for example, a video as 12:01:30.
1 function duration($seconds_count) 2 { 3 $delimiter = ':'; 4 $seconds = $seconds_count % 60; 5 $minutes = floor($seconds_count/60); 6 $hours = floor($seconds_count/3600); 7 8 $seconds = str_pad($seconds, 2, "0", STR_PAD_LEFT); 9 $minutes = str_pad($minutes, 2, "0", STR_PAD_LEFT).$delimiter; 10 11 if($hours > 0) 12 { 13 $hours = str_pad($hours, 2, "0", STR_PAD_LEFT).$delimiter; 14 } 15 else 16 { 17 $hours = ''; 18 } 19 20 return "$hours$minutes$seconds"; 21 }
How to upload a file with PHP and lib_curl
This is an example of how to upload a file from PHP to another server that may or may not be running PHP .
Note that using Pear’s HTTP _Request package is probably easier.
1 <?php 2 require_once('Var_Dump.php'); 3 Var_Dump::displayInit(array('display_mode' => 'HTML4_Text'), array('mode' => 'normal','offset' => 4)); 4 5 $url = 'www.aktagon.com/upload'; 6 $file = '/tmp/file_to_upload'; 7 $post_data = array(); 8 9 $post_data['username'] = ''; 10 $post_data['password'] = ''; 11 $post_data['file'] = "@$file"; 12 13 $ch = curl_init(); 14 15 curl_setopt($ch, CURLOPT_URL, $url); 16 curl_setopt($ch, CURLOPT_HTTPHEADER, array( 17 # 'Cookie: xxxx', 18 # 'Content-Type: xxxx' 19 )); 20 curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 21 curl_setopt($ch, CURLOPT_POST, true); 22 #curl_setopt($ch, CURLOPT_PROXY, '127.0.0.1:8888'); 23 24 curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); 25 26 $response = curl_exec($ch); 27 $info = curl_getinfo($ch); 28 $http_code = $info['http_code']; 29 $speed = round($info['speed_upload'] / 1024); 30 $size = round($info['size_upload'] / 1024); 31 32 if($http_code != 200) 33 { 34 echo "Upload failed with HTTP code $http_code. Uploaded $size kilobytes with $speed kilobytes/s.<br/>"; 35 echo "<h1>Response</h1><pre>$response</pre><h1>Debug information</h1>"; 36 37 Var_Dump::display($info); 38 } 39 else 40 { 41 echo "Uploaded successful. Uploaded $size kilobytes with $speed kilobytes / s.<br/>"; 42 echo "<h1>Response</h1><pre>$response</pre>"; 43 } 44 curl_close($ch); 45 ?> 46
You can remove the Var_Dump code (Pear module), if you haven’t installed it, or don’t need it.
How to print all HTTP headers with PHP
1 <ul> 2 <?php 3 foreach($_SERVER as $h=>$v) 4 if(ereg('HTTP_(.+)',$h,$hp)) 5 echo "<li>$h = $v</li>\n"; 6 header('Content-type: text/html'); 7 ?> 8 </ul>
How to add logging to CakePHP applications
Note that Pear’s Logging package is a lot more flexible, so I recommend you use that instead of CakePHP’s built-in logging.
Use this code to add a debug message to the CakePHP debug log:
1 $this->log("Upload action accessed", LOG_DEBUG);
Note that using something other than LOG _DEBUG will log the message as an error.
Run the code once and you should be able to see the message in $CAKE_APP/tmp/logs/debug.log.
PHP XML-RPC example using Pear's XML_RPC package
First you need to install XML _RPC and VAR _DUMP:
Installing XML _RPC
1 pear install XML_RPC 2 pear install VAR_DUMP
Example XML -RPC client
Note this code hasn’t been tested, so may contain errors.
Anyway, VAR _DUMP is great for debugging…
1 <?php 2 require_once("XML/RPC.php"); 3 require_once('Var_Dump.php'); 4 5 Var_Dump::displayInit(array('display_mode' => 'HTML4_Text'), array('mode' => 'normal','offset' => 4)); 6 7 $host = "xxx.com"; 8 $uri = "/xxx/xmlrpc"; 9 10 $function = "eat"; 11 $parameters = array( 12 new XML_RPC_Value("a"), 13 new XML_RPC_Value(0), 14 new XML_RPC_Value(10), 15 new XML_RPC_Value("b") 16 ); 17 18 $message = new XML_RPC_Message($function, $parameters); 19 20 $client = new XML_RPC_Client($uri, $host, 80); 21 $client->setDebug(1); 22 $client->proxy = "127.0.0.1"; 23 24 $result = $client->send($message); 25 26 if (!$result) { 27 echo 'Communication error: '.$client->errstr; 28 Var_Dump::display($client); 29 exit; 30 } 31 32 if($result->faultCode()) 33 { 34 echo "** ERROR **n"; 35 echo 'Fault Code: ' . $result->faultCode() . "n"; 36 echo 'Fault Reason: ' . $result->faultString() . "n"; 37 exit; 38 } 39 40 echo "<pre>".htmlentities($message->serialize()). "</pre>"; 41 42 Var_Dump::display($result); 43 44 $val = $result->value(); 45 $ticket = $val->scalarval(); 46 47 echo $ticket; 48 ?> 49
Data types
struct
1 $user_params = array( 2 'username' => new XML_RPC_Value(".."), 3 'email' => new XML_RPC_Value("..."), 4 'time' => new XML_RPC_Value(gmdate("Ymd\TH:i:s"), 'dateTime.iso8601') 5 ); 6 7 $rpc_param = new XML_RPC_Value($user_params, 'struct')
dateTime.iso8601
1 'time' => new XML_RPC_Value(gmdate("Ymd\TH:i:s"), 'dateTime.iso8601')