PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

getmyuid> <getmyinode
Last updated: Fri, 11 Apr 2008

view this page in

getmypid

(PHP 4, PHP 5)

getmypid — Obtiene el ID del proceso PHP

Descripción

int getmypid ( void )

Obtiene el ID del proceso PHP actual.

Valores retornados

Devuelve el ID del proceso PHP actual, o FALSE si ocurre un error.

Notes

Warning

Los IDs de proceso no son únicos, por lo tanto son una fuente débil de entropía. Es recomendable no depender en ids de proceso en contextos sujetos a consideraciones de seguridad.



getmyuid> <getmyinode
Last updated: Fri, 11 Apr 2008
 
add a note add a note User Contributed Notes
getmypid
tugla solonka
19-Nov-2007 11:09
What is the difference between posix_getpid() and getmypid()? It appears that they're implemented differently. I wrote this quick test script:

<?php
$max
= 1000000;

$arr = array();
$a_0 = microtime(TRUE);
for (
$i=0; $i<$max; $i++) {
       
$arr[] = getmypid();
}
$a_1 = microtime(TRUE);

$arr = array();
$b_0 = microtime(TRUE);
for (
$i=0; $i<$max; $i++) {
       
$arr[] = posix_getpid();
}
$b_1 = microtime(TRUE);

$diff_a = $a_1 - $a_0;
$diff_b = $b_1 - $b_0;
echo
"A: $diff_a, B: $diff_b: " . ($diff_b / $diff_a) . "\n";
?>

I ran this a number of times, and time got results similar to this:

A: 1.1289880275726, B: 1.1726188659668: 1.0386459708417

So it's around 4% faster to use getmypid().
kroczu at interia dot pl
19-Dec-2005 01:59
<?
/*

mixed getpidinfo(mixed pid [, string system_ps_command_options])

this function gets PID-info from system ps command and return it in useful assoc-array,
or return false and trigger warning if PID doesn't exists

$pidifo=getpidinfo(12345);

print_r($pidifo);

Array
(
    [USER] => user
    [PID] => 12345
    [%CPU] => 0.0
    [%MEM] => 0.0
    [VSZ] => 1720
    [RSS] => 8
    [TT] => ??
    [STAT] => Is
    [STARTED] => 6:00PM
    [TIME] => 0:00.01
    [COMMAND] => php someproces.php > logfile
)

*/

//////////////////////////////////////////////

function getpidinfo($pid, $ps_opt="aux"){

  
$ps=shell_exec("ps ".$ps_opt."p ".$pid);
  
$ps=explode("\n", $ps);
  
   if(
count($ps)<2){
     
trigger_error("PID ".$pid." doesn't exists", E_USER_WARNING);
      return
false;
   }

   foreach(
$ps as $key=>$val){
     
$ps[$key]=explode(" ", ereg_replace(" +", " ", trim($ps[$key])));
   }

   foreach(
$ps[0] as $key=>$val){
     
$pidinfo[$val] = $ps[1][$key];
      unset(
$ps[1][$key]);
   }
  
   if(
is_array($ps[1])){
     
$pidinfo[$val].=" ".implode(" ", $ps[1]);
   }
   return
$pidinfo;
}

?>
Pure-PHP
21-Mar-2005 11:26
You can use this function also to avoid more than one instance of your app.

You can also use this class.
http://www.pure-php.de/node/20

Usage:

<?php

inlude
("ProcessHandler.class.php");

if(
ProcessHandler::isActive()){
   die(
"Already running!\n";);
}else{
  
ProcessHandler::activate();
  
//run my app
}

?>
brooke at jump dot net
25-Oct-2003 02:49
One good use for this is deciding on a concurrency-safe temporary file or directory name. You can be assured that no two processes on the same server have the same PID, so this is enough to avoid collisions. For example:

$tmpfile = "/tmp/foo_".getmypid();
// Use $tmpfile...
// Use $tmpfile...
// Use $tmpfile...
unlink ($tmpfile);

If you are sharing /tmp over the network (which is odd....) then you can, of course, mix in the PHP server's IP address.
barry at staes dot nl
29-Jul-2003 09:26
Why dont use use uniqid() to get a unique serial nr for security purposes?
Or md5(uniqid()), for extra fun.
Check http://www.php.net/uniqid for more about this..
Webmaster at PopCart dot com
27-Mar-2003 01:29
$_SERVER['REMOTE_ADDR'] is a bad thing to use these days.
Since AOL, and MSN Browsers change the IP address at the
most uncomfortable times, such as going from unsecure to
secure mode, you cannot rely on it staying the same anymore.
Using this Octal-Quad for hanging on to a user, such as in
shopping carts will ALWAYS FAIL with AOL browsers.  FYI.
10-Sep-2002 11:46
Something you can use to combine several weak entropy sources, into a better init value for srand() and mt_srand():

mt_srand(time()
    ^ (int)microtime()
    ^ ip2long($_SERVER['REMOTE_ADDR'])
    ^ (int)$_SERVER['REMOTE_PORT']
    ^ @getmypid()
    ^ @disk_free_space('/tmp')
    );

Note that getmypid() may return 0 on some shared PHP installations that have excluded it for "safe"...

The safe mode also exclude the disk_free_space(directory) function call in some cases, for security reason. This explains the use of the @ operator to ignore warnings... the directory should be a highly active directory, which is accessible and typically used for temporary contents generated by PHP.

The above code combines all these sources using XOR binary operations, to avoid 32-bit overflows.
carl at NOSPAM dot thep dot lu dot se
06-Aug-2001 01:07
As it is very unlikely today that there will be two PHP processes with
the same process ID within the same microsecond, this function can
be used for something like srand((int)microtime() ^ getmypid() ^ time())
to have a decent chance of avioding a collision.
<p>
Just relying on the time in microseconds is a rather Bad Thing to do, since
a contect switch might very well take a lot less than that, so there's a decent
chance of two simultaneous request to get the same ID.
<P>
If you're running your php script upon an HTTP request, you might even want to toss in the IP addy of the remote host in your seed for a bit of extra entropy. You can't be too paranoid when it comes to 'random' numbers.
<p>(Side note: I tried using hardware to generate random numbers, but
with my setup it took just about forever to gather enough entropy.
All hail ran3()! )

getmyuid> <getmyinode
Last updated: Fri, 11 Apr 2008
 
 
show source | credits | sitemap | contact | advertising | mirror sites