Handling large mysqldump import with PHP

Client’s intranet is on an Apache / Windows box on the other side of the continent and we needed a quick way to synch up our development environment with theirs. Their database has been accumulating production data for over 36 months and the filesize of the export from phpMyAdmin reads 11.7MB. To avoid manual export from phpMyAdmin, we used the PHP system function to automate creation of the dump file as follows:

$cmd     =     “\path\to\mysql\bin\mysqldump.exe ”

.    “–skip-extended-insert ”
.    “–skip-add-locks ”
.    “–skip-add-drop-table ”
.    “–skip-set-charset ”
.    “–skip-comments ”
.    “–result-file=$filepath/$dump_filename -r $filepath/$dump_filename ”
.    “–user dbusername ”
.    “–password=dbpassword ”
.    “dbname”
;

system ( $cmd );

The resulting dump file from mysqldump is 15.4MB. We couldn’t use phpMyAdmin to import w/out suffering through several timeouts before the import was completed. What to do? We found this amazing script by Alexey Ozerov: BigDump

The BigDump script basically times itself out every 2 to 3 seconds (configurable) and restarts the dump where it left off from the previous import. It has a progress bar so you get visual status on the import.

Links

system: PHP function for CLI executable.
phpMyAdmin: PHP based MySQL administrative tools.
mysqldump: MySQL database backup program.
BigDump PHP script: awesome script that assists in huge dump file imports via http.
Notepad++: Windows text editor that preserves carriage return or line feed (CRLF, \r\n) format of the original document. Really helpful when editing a dump file created for use with BigDump.

Clearing Browser Cache

Update 2010.07.09: wikiHow has a great article on clearing browser cache.

Internet Explorer 6:

Tools (menu) -> Internet Options (menu) ->
Internet Options (control panel) -> General (tab) ->
Temporary Internet Files -> Delete Files (button) ->
OK (button)

Internet Explorer 7:

Tools (menu) -> Delete Browsing History (menu) ->
Temporary Internet Files -> Delete Files (button) -> Yes (button)

Firefox 2:

Tools (menu) -> Clear Private Data (menu) ->
Cache (checkbox) -> Clear Private Data Now (button)

Firefox 3:

Tools (menu) -> Clear Recent History (menu)
Time Range -> Everything (select menu)
Details -> Cache (checkbox)
OK (button)

Safari:

Safari (menu) -> Empty Cache (menu) -> Empty (button)

For more information on web cache: wikipedia.org/Web_cache

Email to SMS

Trying to figure out how to email a grocery list to our street team, we ran across this list of major US cell phone providers and how to format emails to send text messages:

Provider Email Format
Alltel: {number}@message.alltel.com
AT&T: {number}@mms.att.net
Nextel: {number}@messaging.nextel.com
Sprint: {number}@messaging.sprintpcs.com
Suncom: {number}@tms.suncom.com
T-mobile: {number}@tmomail.net
Voicestream: {number}@voicestream.net
Verizon (text only): {number}@vtext.com
Verizon (pics and vids): {number}@vzwpix.com

Replace the {number} with the 10 digit phone number of our recipient and now we can hand down our directives to the street team without ever picking up the cellie. Booyah!

Apply Dynamic Style to a Class

We recently needed to create an HTML page and dynamically hide/show an entire class of <div> tags that were interspersed throughout the page. Using the getElementsByTagName javascript method, we were able to iterate over all of the <div> elements in the document. Then check the CSS class by accessing the className DOM element:

oDivs = document.getElementsByTagName ( “div” );
for ( d = 0;  d < oDivs.length;  d++ ) {

// cl_name = oDivs[ d ].getAttribute ( “class” ); // does NOT work in IE
cl_name = oDivs[ d ].className;
if ( cl_name == “bio” ) {

oDivs[ d ].style.display = “none”;

}

}

Note that the getAttribute method does not work in IE since class is a reserved word for IE. Took us a little while to figure that one out.