]> granicus.if.org Git - php/commitdiff
merge in some PHP3 stuff
authorSascha Schumann <sas@php.net>
Fri, 21 May 1999 08:37:48 +0000 (08:37 +0000)
committerSascha Schumann <sas@php.net>
Fri, 21 May 1999 08:37:48 +0000 (08:37 +0000)
ChangeLog.TODO
ext/standard/microtime.c

index b44729dc49fdbf8609767922c3d5ff6b58dcf5b1..b152b40601148acea8f85e8ea9f8c138e315f33b 100644 (file)
@@ -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
 
 
index bc2bc7b3b1f5e8086672311894aeb57656f2fb99..7dd3e9b66c57d01b232e0a3cd997a9494a6c5c02 100644 (file)
 
 /* {{{ 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