Category Archives: Web tools

Difference Between MySQL Table Type MyISAM and InnoDB?


  • The main difference between MyISAM and InnoDB is that InnoDB supports transaction.
  • InnoDB supports some newer features: Transactions, row-level locking, foreign keys.
  • InnoDB is for high volume, high performance.


MyISAM is of course the default table type i’m MySQL

Some says MyISAM is fast and some says that InnoDB is ?
Let me explain you, If your data is very large and you have to run more more query there per minutes, or we can say if you need transaction more.INSERT, UPDATE query are executed per minutes.
and table contains very data,then InnoDB will the best solution, according to all of your need , it will prove fetch,insert,update all will fast. InnoDB has been designed for maximum performance when processing large data volumes.



If your data integration so much high,then it’s better to user InnoDB.

But if you haven’t so much data and preparing small application, queries inseting fetching data is not too much,then it is better to use MyISAM, It will work faster rather then InnoDB in this case.


The InnoDB storage engine maintains its own buffer pool for caching data and indexes in main memory. InnoDB stores its tables and indexes in a table space, which may consist of several files (or raw disk partitions). This is different from, for example, MyISAM tables where each table is stored using separate files. InnoDB tables can be of any size even on operating systems where file size is limited to 4GB.


In hard disk tables of MyISAM is low weighted (contains less memory space) rather than InnoDB.


Locking Difference in MyISAM and InnoDB?

MyISAM provide the table level locking means if the data in one table has been modified by the other table ,the entire table will lock for the next process.But InnoDB provide the row level locking only the row of the table that is being updated is locked.


MyISAM provide a full variety of datatypes,but InnoDB will not do.


MyISAM provide full text search which is not supported by InnoDB.



Force file download using PHP script and HTTP headers

Force file download using PHP algorithm


It is very frustrating to click on a link to a document you want to read, and then have to wait for it to download and finally it open on your computer/browser, but you had expected it to download. It is mainly for some file types as (eg: txt, jpg, png, gif, html, pdf, etc.)


If you have a file and want it to make available for people to download? If it is an HTML file or a PDF, you can’t just post link, as the web browsers open those automatically, instead you need to do some trickery using PHP script and below is the same, hope it will help you a lot.


PHP allows you to change the HTTP headers of files that you’re writing, so that you can force a file to be download. This is perfect for files like PDFs, document files, images, and video that you want your customers to download rather than open it in browser for view.




// Define the path to file,you want to make it downloadable
$file = ‘’;


// File doesn’t exist, output will show error
die(‘file not found’);


// Set headers
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file");
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: binary");

// Read the file from disk



What is HTTP Headers and how to set php HTTP Headers?

The header() function sends a raw HTTP header to a client or browser or simply we can say it tells browser what type of content,it have to show. When a request sent from server to client/browser the HTTP informations has been sent to browser,The HTTP information may be small or large depends on the page and content shown.


A small HTTP information sent by browser are

HTTP/1.1 301 Moved Permanently =>

Date => Fri, 25 Aug 2011 02:00:03 GMT
Server => Apache
X-Powered-By => PHP/5.3.0
X-Pingback =>
Location =>
Content-Length => 0
Connection => close
Content-Type => text/html; charset=UTF-8


It is important to notice that header()  always be called before any actual output is sent (In PHP 4 and later, you can use output buffering to solve this problem):
for output buffering simply, a PHP function is used


PHP is not limited to output only html. PHP can output images, pdf, JavaScript files as well. Browsers determine what type of content is by analysing the headers sent.To send PHP header use the function header(). You have to call this function before output shown. Use the function headers_sent() to check whether the headers have been sent and output started.

There are various headers used, here are some examples.


// Status code (301,302,404,403) headers
// Use this header instruction to fix 404 headers
header(‘HTTP/1.1 200 OK’);


// Page was not found:
header(‘HTTP/1.1 404 Not Found’);


// Access forbidden:
header(‘HTTP/1.1 403 Forbidden’);


// The page moved permanently should be used for all redirections, because search engines always know
// what’s going on and it can easily update their urls in the web master tools
header(‘HTTP/1.1 301 Moved Permanently’);


// Server error
header(‘HTTP/1.1 500 Internal Server Error’);


// Redirect to a new location:


// Redirect with a delay:
header(‘Refresh: 10; url=’);
print ‘You will be redirected in 10 seconds’;


// you can also use the HTML syntax
// <meta http-equiv=”refresh” content=”10;” />

// override X-Powered-By value

header(‘X-Powered-By: PHP/4.4.0’);
header(‘X-Powered-By: Brain/0.6b’);


// content language (en = English)
header(‘Content-language: en’);


// last modified (good for caching)
$time = time() – 60; // or filemtime($fn), etc
header(‘Last-Modified: ‘.gmdate(‘D, d M Y H:i:s’, $time).’ GMT’);


// header for telling the browser that the content did not get changed
header(‘HTTP/1.1 304 Not Modified’);


// set content length (good for caching)
header(‘Content-Length: 5000’);


// Disable caching of the current document
header(‘Cache-Control: no-cache, no-store, max-age=0, must-revalidate’);
header(‘Expires: Mon, 26 Jul 1999 05:00:00 GMT’); // Date of  past
header(‘Pragma: no-cache’);


// set content type (page have content of type)
header(‘Content-Type: text/html; charset=iso-8859-1’);
header(‘Content-Type: text/html; charset=utf-8’);
header(‘Content-Type: text/plain’); // plain text file
header(‘Content-Type: application/x-shockwave-flash’); // Flash animation
header(‘Content-Type: image/jpeg’); // JPG picture
header(‘Content-Type: application/pdf’); // PDF file
header(‘Content-Type: audio/mpeg’); // Audio MPEG (MP3,…) file
header(‘Content-Type: application/zip’); // ZIP file


// show sign in box
header(‘HTTP/1.1 401 Unauthorized’);
header(‘WWW-Authenticate: Basic realm=”Top Secret”‘);
print ‘Text that will be displayed if the user hits cancel or ‘;
print ‘enters wrong login data’;


// Headers for an download
header(“Cache-Control: public”);
header(“Content-Description: File Transfer”);
header(“Content-Disposition: attachment; filename=$file”);
header(“Content-Type: application/zip”);
header(“Content-Transfer-Encoding: binary”);