mmm, una soluzione probabilmente migliore sarebbe quella di mettere come suffisso, invece che il numero della e-mail l'orario in forma di unixtimestamp cosi da averle comunque ordinate progressivamente ma snellendo considerevolmente il codice
	codice:
	define('_EMAIL_PATH_','email_'); 
define('_EMAIL_PREFIX_','email_'); 
define('_EMAIL_SUFFIX_','.eml'); 
//Write Email 
$f = fopen(_EMAIL_PATH_ . '/' . _EMAIL_PREFIX_ . time() . _EMAIL_SUFFIX_, "w+"); 
fwrite($f, file_get_contents("php://stdin")); 
fclose($f);
 
ma oltre a questo, un'altra cosa importante è evitare che la memoria utilizzata per l'operazione sia eccessiva: cosi si butta tutto in memoria senza ritegno e poi scrive, sarebbe meglio leggerlo a chunk andandolo scrivendo
	codice:
	<?php
define('__BUFFER_SIZE', '8192'); 
define('__EMAIL_PATH', 'email_'); 
define('__EMAIL_PREFIX', 'email_'); 
define('__EMAIL_SUFFIX', '.eml'); 
$fpInput = fopen('php://stdin', 'r');
$fpOutput = fopen(__EMAIL_PATH . '/' . __EMAIL_PREFIX . time() . __EMAIL_SUFFIX, 'wb'); 
while(feof($fpInput) === false)
{
  $buffer = fread($fpInput, __BUFFER_SIZE);
  fwrite($fpOutput, $buffer);
}
fclose($fpInput);
fclose($fpOutput);
?>
 
Poi, se si vuole fare girare su linux si può anche fare
	codice:
	#!/usr/bin/php -q
<?php
define('__BUFFER_SIZE', '8192'); 
define('__EMAIL_PATH', 'email_'); 
define('__EMAIL_PREFIX', 'email_'); 
define('__EMAIL_SUFFIX', '.eml'); 
$fpInput = fopen('php://stdin', 'r');
$fpOutput = fopen(__EMAIL_PATH . '/' . __EMAIL_PREFIX . time() . __EMAIL_SUFFIX, 'wb'); 
while(feof($fpInput) === false)
{
  $buffer = fread($fpInput, __BUFFER_SIZE);
  fwrite($fpOutput, $buffer);
}
fclose($fpInput);
fclose($fpOutput);
?>
 
cosi da non dover richiamare anche l'interprete dalla configurazione di php (su linux, *bsd e mac os x)