g2              Wed, 15 Jul 2009 20:59:08 +0000

URL: http://svn.php.net/viewvc?view=revision&revision=284147

Changed paths:
        U   php/phpruntests/trunk/src/taskScheduler/rtTaskSchedulerFile.php

Log:
minor bugifx to avoid warning

Modified: php/phpruntests/trunk/src/taskScheduler/rtTaskSchedulerFile.php
===================================================================
--- php/phpruntests/trunk/src/taskScheduler/rtTaskSchedulerFile.php     
2009-07-15 19:16:58 UTC (rev 284146)
+++ php/phpruntests/trunk/src/taskScheduler/rtTaskSchedulerFile.php     
2009-07-15 20:59:08 UTC (rev 284147)
@@ -21,6 +21,18 @@
        private $groupTasks = false;    // are the tasks stored in groups?


+       /**
+        * the signal-handler is called by the interrupt- or quit-signal. this 
is
+        * necessary to cleanup the tmp files and terminate the script correct.
+        *
+        * @param int $signal
+        */
+       public static function signalHandler($signal)
+       {
+               exit(0);
+       }
+
+
     /**
      * sets the task-list which has to be an array of task-objects.
      * it's also possible to use a multidimensional array. in this case the
@@ -33,7 +45,7 @@
      */
        public function setTaskList(array $taskList)
        {
-               if (is_array($taskList[0])) {
+               if (isset($taskList[0]) && is_array($taskList[0])) {
                        $this->groupTasks = true;
                        $this->processCount = sizeof($taskList);
                }
@@ -77,6 +89,7 @@
                        $this->processCount = sizeof($this->taskList);
                }

+
                // distribute the task to the children
                $this->distributeTasks();

@@ -99,7 +112,12 @@
                                        break;
                        }
                }
+
+               // register signal-handler
+               pcntl_signal(SIGINT, "rtTaskSchedulerFile::signalHandler");
+               pcntl_signal(SIGQUIT, "rtTaskSchedulerFile::signalHandler");

+
                // wait until all child-processes are terminated
                for ($i=0; $i<$this->processCount; $i++) {
                        pcntl_waitpid($this->pidStore[$i], $status);
@@ -160,16 +178,16 @@
                        $response = explode("[END]", $response);
                        array_pop($response);

-                       foreach ($response as $resultList) {
+                       foreach ($response as $testGroupResults) {

-                               $resultList = unserialize($resultList);
+                               $testGroupResults = 
unserialize($testGroupResults);

-                               if ($resultList === false) {
+                               if ($testGroupResults === false) {
                                        print "ERROR unserialize - receiver 
$cid\n";
                                        continue;
                                }
-
-                               $this->resultList = 
array_merge($this->resultList, $resultList);
+
+                               $this->resultList[] = $testGroupResults;
                        }

                        unlink(self::TMP_FILE.$cid);
@@ -194,6 +212,8 @@

                foreach ($taskList as $task) {

+                       $s = microtime(true);
+
                        $task = unserialize($task);

                        if ($task === false) {
@@ -202,8 +222,15 @@
                        }

                        $task->run();
+
+                       $e = microtime(true);
+
                        $results = $task->getResult();

+                       if (isset($results[0]) && is_object($results[0])) {
+                               $results[0]->setTime($e-$s);
+                       }
+
                        rtTestOutputWriter::flushResult($results, 
$this->reportStatus, $cid);

                        $response = serialize($results)."[END]";

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to