From 4fe8fe715e4347a4063a57e1a9fd6dc013ca9ee0 Mon Sep 17 00:00:00 2001 From: Sascha Schumann Date: Fri, 21 May 1999 08:37:48 +0000 Subject: [PATCH] merge in some PHP3 stuff --- ChangeLog.TODO | 3 -- 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 -- 2.50.1