diff options
author | Sascha Schumann <sas@php.net> | 1999-05-21 08:37:48 +0000 |
---|---|---|
committer | Sascha Schumann <sas@php.net> | 1999-05-21 08:37:48 +0000 |
commit | 4fe8fe715e4347a4063a57e1a9fd6dc013ca9ee0 (patch) | |
tree | b947de8c0be14a7012777bdbf8f5d753bcfd9add | |
parent | 6f06b1167927411909b1c9490cacf3de453fc6bf (diff) | |
download | php-git-4fe8fe715e4347a4063a57e1a9fd6dc013ca9ee0.tar.gz |
merge in some PHP3 stuff
-rw-r--r-- | ChangeLog.TODO | 3 | ||||
-rw-r--r-- | ext/standard/microtime.c | 77 |
2 files changed, 73 insertions, 7 deletions
diff --git a/ChangeLog.TODO b/ChangeLog.TODO index b44729dc49..b152b40601 100644 --- a/ChangeLog.TODO +++ b/ChangeLog.TODO @@ -42,7 +42,6 @@ March 1 1999, Version 3.0.7 variables. - Clean up apxs build - Add INSTALL.REDHAT file to walk RedHat users through the install -- Added YP/NIS module from Stephanie Wehner - Added optional second argument to mysql_fetch_array(); MYSQL_ASSOC will cause the resulting array to contain the associative indices only, MYSQL_NUM will cause the array to contain the numeric indices only (like @@ -88,7 +87,5 @@ March 1 1999, Version 3.0.7 - Constructors of parent classes weren't accessible to derived classes (as of 3.0.6). Fixed. - Introduce simple regex compilation cache -- Add gettimeofday() function -- Add getrusage() function diff --git a/ext/standard/microtime.c b/ext/standard/microtime.c index bc2bc7b3b1..7dd3e9b66c 100644 --- a/ext/standard/microtime.c +++ b/ext/standard/microtime.c @@ -54,11 +54,7 @@ /* {{{ proto string microtime(void) Returns a string containing the current time in seconds and microseconds */ -#ifdef __cplusplus -void php3_microtime(HashTable *) -#else PHP_FUNCTION(microtime) -#endif { #if HAVE_GETTIMEOFDAY struct timeval tp; @@ -76,6 +72,79 @@ PHP_FUNCTION(microtime) } /* }}} */ + +/* {{{ proto array gettimeofday(void) + returns the current time as array */ +PHP_FUNCTION(gettimeofday) +{ +#if HAVE_GETTIMEOFDAY + struct timeval tp; + struct timezone tz; + + memset(&tp, 0, sizeof(tp)); + memset(&tz, 0, sizeof(tz)); + if(gettimeofday(&tp, &tz) == 0) { + array_init(return_value); + add_assoc_long(return_value, "sec", tp.tv_sec); + add_assoc_long(return_value, "usec", tp.tv_usec); + add_assoc_long(return_value, "minuteswest", tz.tz_minuteswest); + add_assoc_long(return_value, "dsttime", tz.tz_dsttime); + return; + } else +#endif + RETURN_FALSE; +} +/* }}} */ + +/* {{{ proto array getrusage([ int who ]) + returns an array of usage statistics */ +PHP_FUNCTION(getrusage) +{ +#if HAVE_GETRUSAGE + struct rusage usg; + int ac = ARG_COUNT(ht); + pval *pwho; + int who = RUSAGE_SELF; + + if(ac == 1 && + getParameters(ht, ac, &pwho) != FAILURE) { + convert_to_long(pwho); + if(pwho->value.lval == 1) + who = RUSAGE_CHILDREN; + } + + memset(&usg, 0, sizeof(usg)); + if(getrusage(who, &usg) == -1) { + RETURN_FALSE; + } + + array_init(return_value); +#define PHP3_RUSAGE_PARA(a) \ + add_assoc_long(return_value, #a, usg.a) +#ifndef _OSD_POSIX /* BS2000 has only a few fields in the rusage struct */ + PHP3_RUSAGE_PARA(ru_oublock); + PHP3_RUSAGE_PARA(ru_inblock); + PHP3_RUSAGE_PARA(ru_msgsnd); + PHP3_RUSAGE_PARA(ru_msgrcv); + PHP3_RUSAGE_PARA(ru_maxrss); + PHP3_RUSAGE_PARA(ru_ixrss); + PHP3_RUSAGE_PARA(ru_idrss); + PHP3_RUSAGE_PARA(ru_minflt); + PHP3_RUSAGE_PARA(ru_majflt); + PHP3_RUSAGE_PARA(ru_nsignals); + PHP3_RUSAGE_PARA(ru_nvcsw); + PHP3_RUSAGE_PARA(ru_nivcsw); +#endif /*_OSD_POSIX*/ + PHP3_RUSAGE_PARA(ru_utime.tv_usec); + PHP3_RUSAGE_PARA(ru_utime.tv_sec); + PHP3_RUSAGE_PARA(ru_stime.tv_usec); + PHP3_RUSAGE_PARA(ru_stime.tv_sec); +#undef PHP3_RUSAGE_PARA +#endif /* HAVE_GETRUSAGE */ +} +/* }}} */ + + /* * Local variables: * tab-width: 4 |