<?php\r
\r
class wsConversionSession {\r
- public $documents = array();\r
- public function __construct()\r
+ protected $documents = array();\r
+ protected $guid;\r
+ protected $progress = 0;\r
+\r
+ public function __construct($guid)\r
{\r
- if (!isset($_SESSION['conversionSession'])) {\r
- $_SESSION['conversionSession'] = array();\r
- }\r
- $this->documents = $_SESSION['conversionSession'];\r
- $_SESSION['conversionSessionProgress'] = 0;\r
- unset($_SESSION['conversionSession']);\r
+ $this->guid = $guid;\r
+ }\r
+\r
+ public function setDocuments($documents)\r
+ {\r
+ $this->documents = $documents;\r
}\r
\r
public function process()\r
{\r
- for($i = $_SESSION['conversionSessionProgress'];$i <= 100;$i++) {\r
- usleep(0.25 * 1000000);\r
- $_SESSION['conversionSessionProgress'] = $i;\r
+ for($i = 1;$i <= 100;$i++) {\r
+ cubePHP::sleep(0.1);\r
+ $i++;\r
+ }\r
+ }\r
+\r
+ public function getProgress()\r
+ {\r
+ return $this->progress;\r
+ }\r
+\r
+ public function setProgress($i)\r
+ {\r
+ $this->progress = $i;\r
+ $this->serialize();\r
+ }\r
+\r
+ public function serialize()\r
+ {\r
+ file_put_contents(self::getCachePath($this->guid), serialize($this));\r
+ }\r
+\r
+ public function __destruct()\r
+ {\r
+ $this->serialize();\r
+ }\r
+\r
+ public static function openFromGUID($guid)\r
+ {\r
+ $serializedObject = self::getCachePath($guid);\r
+ if (file_exists($serializedObject)) {\r
+ return unserialize(file_get_contents($serializedObject));\r
+ } else {\r
+ return new wsConversionSession($guid);\r
}\r
}\r
+\r
+ public static function getCachePath($guid)\r
+ {\r
+ return CACHE . '/conversionSessions/' . $guid;\r
+ }\r
}\r
\r
?>
\ No newline at end of file
\r
public function processConversionSession()\r
{\r
- $cookies = array(session_name() => session_id());\r
+ $_SESSION['sessionConversionGUID'] = $sessionConversionGUID = uniqid('conversion_', true);\r
+ $session = new wsConversionSession($sessionConversionGUID);\r
+ $session->setDocuments($_SESSION['conversionSession']);\r
+ $conversion->serialize();\r
+\r
$http = new cubeHTTP($_SERVER['HTTP_HOST']);\r
$http->setDataTimeout(3);\r
- $http->get('/flash/processConversionSessionAsync', array('user_email' => $_SESSION['user_email'], 'user_password' => $_SESSION['user_password']));\r
+ $http->post('/flash/processConversionSessionAsync', array('user_email' => $_SESSION['user_email'], 'user_password' => $_SESSION['user_password'], 'sessionConversionGUID' => $sessionConversionGUID));\r
}\r
\r
public function processConversionSessionAsync()\r
{\r
- file_put_contents(ROOT . '/test.txt', print_r($_SERVER, true));\r
cubePHP::neverStop();\r
- $conversion = new wsConversionSession();\r
+ $conversion = wsConversionSession::openFromGUID($_POST['sessionConversionGUID']);\r
$conversion->process();\r
}\r
\r
public function getConversionSessionProgress()\r
{\r
- if (!isset($_SESSION['conversionSessionProgress'])) {\r
- $_SESSION['conversionSessionProgress'] = 0;\r
- }\r
- $this->xml->addChild('progress', $_SESSION['conversionSessionProgress']);\r
+ $session = wsConversionSession::openFromGUID($_SESSION['sessionConversionGUID']);\r
+ $this->xml->addChild('progress', $session->getProgress());\r
}\r
}\r
\r