Showing posts with label Engineering. Show all posts
Showing posts with label Engineering. Show all posts
Friday, April 22, 2011

Fixing Time Mismatch in PHP, mySQL and Server on CentOS


Recently, I was informed by my development & networks team that there's a timing mismatch on one of our dedicated servers which is affecting cron execution and that they are unable to fix it. Most of our servers don't have Webmin, Kloxo or any other WHM, and we manage them via Putty/Commandline or FTP.

This one had Kloxo/HyperVM installed and even the Time Zone function in the Kloxo wasn't fixing the time offset. Server was showing the correct local time, mySQL was 7 hours behind whereas the PHP was one hour ahead. The fix for all entities wasn't listed at a single source so I had to search from various sources to fix it. 

I normally don't blog about technology but I thought I should publish the fix so if anyone of you ever comes across a similar issue, may be it helps him/her too.

Setting Server Time

Stop ntpd if running
# /etc/init.d/ntpd stop
#
#
sync time with ntp server
# /usr/sbin/ntpdate 10.2.3.9
27 Aug 01:10:56 ntpdate[27008]: adjust time server 10.2.3.9 offset -0.048726 sec
#
#
Keep the original zone file
# cp /usr/share/zoneinfo/Asia/City/usr/share/zoneinfo/Asia/City_orig_YYYYmmDD
#
Make a new zone file
# cat /tmp/Karachi
Rule Country Min Max – Jun 19 04:20:59 1 PKT
Rule Country Min Max – Oct  28 23:59:59 0 PKT
Zone Asia/City+5:00 Country%s
compile the new zone file
# zic /tmp/City
#
See the time has changed
# date
Thu Mar 28 02:05:34 PKT 2011
#
See if ntp daemon is still running
# ps -ef | grep ntp
root 1982 1188 0 Aug18 ? 00:00:05 /usr/sbin/ntpmon
root 1996 1 0 Aug18 ? 00:00:02 /usr/sbin/ntpd -g
root 31246 30980 0 02:06 pts/0 00:00:00 grep ntp


or SIMPLY  

first, make a backup of the existing localtime file. It’s always good practice to make backups of original config files.
# mv /etc/localtime /etc/localtime.bak
Next, create the link:

# ln -s /usr/share/zoneinfo/Asia/Karachi /etc/localtime
Run # date to confirm the correct time.



PHP Time Fix

For checking the php time, put the following code in a file, say test.php

Code:
    $time = time();
    $result = date(”Y-m-d (D) H:i:s”,$time);
    echo “Current date and local time on  server = $result   “;
    ?>
Execute the php script.

Code:
[root@localhost ~]# php -a time.php
    Interactive mode enabled
    Current date and local time on  server = 2011-04-21 (Thu) 18:04:25
To get the server time , issue the following command :

Code:
[root@localhost ~]# date
    Thu Apr 21 17:04:25 PKT 2011
You can see the difference of one hour between the server time and the php time.
For fixing this, you need to install the PECL timezonedb module.

Code:
[root@localhost ~]# pecl install timezonedb
At the end , you might see the following message :

==========================
Build process completed successfully
Installing ‘/usr/local/lib/php/extensions/no-debug-non-zts-20060613/timezonedb.s o’
install ok: channel://pecl.php.net/timezonedb-2009.6
configuration option “php_ini” is not set to php.ini location
You should add “extension=timezonedb.so” to php.ini
==========================

So , add the line ” extension=timezonedb.so” to the php.ini file and restart apache using command /etc/init.d/httpd restart

There shouldn’t be any mismatch in time now. Use the test.php page again to confirm



mySQL Time Fix

Execute the following command on commandline.

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

username root didn't allow modification due to security reasons so I used another DB Username. You'll be prompted for DB User Password as well.

 

So this is how I synchronized all clocks on my server. If you want me to write more about similar stuff or the technology challenges we come across daily, do let me know by posting your comments.





Wednesday, February 09, 2011

The power of 8052

                                                       Image Courtesy: liafa.jussieu.fr


9th Feb 2011, 5:04:AM, ROOFExpress Office: When Bao G and Shaban Bhai used to teach us Microprocessor Interfacing & Programming Course, some of us took it as a useless course till I realized its power in my Final Year Project. Tonight, I solved 3 problems on a whiteboard using an 8052 with a Pseudocode, and now I seriously wish to go back to the life of Wires, Boards, Assembly Language and Keil. All my friends including Khurram Siddiqi, Ahmad Raza and others who are teaching this course, the kids in your class can solve many social problems with these small tiny devices provided they are given commercial projects. I would request you to please make this course fun for them.