summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSascha Schumann <sas@php.net>1999-05-21 08:37:48 +0000
committerSascha Schumann <sas@php.net>1999-05-21 08:37:48 +0000
commit4fe8fe715e4347a4063a57e1a9fd6dc013ca9ee0 (patch)
treeb947de8c0be14a7012777bdbf8f5d753bcfd9add
parent6f06b1167927411909b1c9490cacf3de453fc6bf (diff)
downloadphp-git-4fe8fe715e4347a4063a57e1a9fd6dc013ca9ee0.tar.gz
merge in some PHP3 stuff
-rw-r--r--ChangeLog.TODO3
-rw-r--r--ext/standard/microtime.c77
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