this little snippet makes a real-time analog clock with the GD library.
don't assume that it's good for the server though...

analog GD clock” makes use of the built-in PHP functions date( ), imagefilledrectangle( ), imagefilledellipse( ), imagecreatetruecolor( ), imagecolortransparent( ), imagettftext( ), header( ), imagepng( ) and imagedestroy( ).

01 <?php
02 
03 $width = 210;
04 $height = 210;
05  
06 if(isset($_GET['doit']))
07 {
08     $font = 'path/to/the/font_file.ttf';
09     $fontsize = 12;
10     $smfontsize = 8;
11     
12     /*---------------------------------------------*/
13     
14     $array['hour'] = 0-(date('h')*30)-270;
15     $array['min'] = 0-(date('i')*6)-270;
16     $array['sec'] = 0-(date('s')*6)-270;
17     
18     /*---------------------------------------------*/
19     
20     function roundedcorners(&$im,$x1,$y1,$x2,$y2,$radius,$color)
21     {
22         imagefilledrectangle($im,$x1+$radius,$y1,$x2-$radius,$y2,$color);
23         imagefilledrectangle($im,$x1,$y1+$radius,$x2,$y2-$radius,$color);
24         imagefilledellipse($im,$x1+$radius,$y1+$radius,$radius*2,$radius*2,$color);
25         imagefilledellipse($im,$x2-$radius,$y1+$radius,$radius*2,$radius*2,$color);
26         imagefilledellipse($im,$x1+$radius,$y2-$radius,$radius*2,$radius*2,$color);
27         imagefilledellipse($im,$x2-$radius,$y2-$radius,$radius*2,$radius*2,$color);
28     }
29     
30     $img = imagecreatetruecolor($width,$height);
31     $white = ImageColorAllocate ($img,255,255,255);
32     $black = ImageColorAllocate ($img,0,0,0);
33     $gray = ImageColorAllocate ($img,250,252,255);
34     $gray2 = ImageColorAllocate ($img,200,210,215);
35     $blue = ImageColorAllocate ($img,80,90,95);
36     roundedcorners(&$img,1,1,$width-3,$height-3,10,$blue);
37     roundedcorners(&$img,3,3,$width-1,$height-1,10,$gray2);
38     roundedcorners(&$img,2,2,$width-2,$height-2,10,$white);
39     roundedcorners(&$img,4,4,$width-4,$height-4,10,$gray);
40     imagecolortransparent($img,$black);
41     
42     imagettftext($img,$fontsize,0,($width/2)-14,21,$gray2,$font,12);
43     imagettftext($img,$fontsize,0,($width/2)-12,23,$blue,$font,12);
44     imagettftext($img,$fontsize,0,($width/2)-13,22,$white,$font,12);
45  
46     imagettftext($img,$fontsize,0,$width-23,($height/2)-6,$gray2,$font,3);
47     imagettftext($img,$fontsize,0,$width-21,($height/2)-4,$blue,$font,3);
48     imagettftext($img,$fontsize,0,$width-22,($height/2)-5,$white,$font,3);
49  
50     imagettftext($img,$fontsize,0,($width/2)-8,$height-12,$gray2,$font,6);
51     imagettftext($img,$fontsize,0,($width/2)-6,$height-10,$blue,$font,6);
52     imagettftext($img,$fontsize,0,($width/2)-7,$height-11,$white,$font,6);
53  
54     imagettftext($img,$fontsize,0,11,($height/2)-6,$gray2,$font,9);
55     imagettftext($img,$fontsize,0,13,($height/2)-4,$blue,$font,9);
56     imagettftext($img,$fontsize,0,12,($height/2)-5,$white,$font,9);
57  
58     roundedcorners($img,($width/2)-10,($height/2)-12,($width/2)+4,($height/2),5,$gray2);
59     roundedcorners($img,($width/2)-8,($height/2)-10,($width/2)+6,($height/2)+2,5,$blue);
60     roundedcorners($img,($width/2)-9,($height/2)-11,($width/2)+5,($height/2)+1,5,$white);
61  
62     $hstr = '.  '.date('h').' hours';
63  
64     imagettftext($img,$smfontsize,$array['hour'],($width/2)-1,($height/2)-2,$blue,$font,$hstr);
65     imagettftext($img,$smfontsize,$array['hour'],($width/2)-3,($height/2)-4,$gray2,$font,$hstr);
66     imagettftext($img,$smfontsize,$array['hour'],($width/2)-2,($height/2)-3,$white,$font,$hstr);
67  
68     $mstr = '.  '.date('i').' minutes';
69  
70     imagettftext($img,$smfontsize,$array['min'],($width/2)-1,($height/2)-2,$blue,$font,$mstr);
71     imagettftext($img,$smfontsize,$array['min'],($width/2)-3,($height/2)-4,$gray2,$font,$mstr);
72     imagettftext($img,$smfontsize,$array['min'],($width/2)-2,($height/2)-3,$white,$font,$mstr);
73  
74     $sstr = '.  '.date('s').' seconds';
75  
76     imagettftext($img,$smfontsize,$array['sec'],($width/2)-1,($height/2)-2,$blue,$font,$sstr);
77     imagettftext($img,$smfontsize,$array['sec'],($width/2)-3,($height/2)-4,$gray2,$font,$sstr);
78     imagettftext($img,$smfontsize,$array['sec'],($width/2)-2,($height/2)-3,$white,$font,$sstr);
79     
80     header('Content-type: image/png');
81     imagepng($img);
82     imagedestroy($img);
83 }else{
84     echo '
85 <img name="clock" src="'.$_SERVER['PHP_SELF'].'?doit=yes" width="'.$width.'" height="'.$height.'" />
86  
87 <script type="text/javascript"><!--
88     function Animation()
89     {
90         document.clock.src = "'.$_SERVER['PHP_SELF'].'?doit="+new Date();
91         window.setTimeout("Animation()",1000);
92     }
93     window.setTimeout("Animation()",1000);
94 //--></script>';
95  
96 }
97  
98 ?>