예제 #1
0
 public function handle($asynctoken, $url, $file, $mode, $minWidth, $minHeight)
 {
     try {
         $token = md5(microtime());
         if ($file) {
             $ext = $this->guessExtension($file);
             $filename = $this->_tmpDir . '/' . $minWidth . '_' . $minHeight . '_' . $token . '.' . $ext;
             file_put_contents($filename, $file);
             $request = 'file://' . $filename;
         } elseif ($url) {
             $request = $url;
             if ($mode === false) {
                 $filename = $this->_tmpDir . '/' . $minWidth . '_' . $minHeight . '_' . $token . '.url';
                 file_put_contents($filename, $url);
             }
         } else {
             $request = null;
         }
         if ($mode === false && !$asynctoken) {
             $asynctoken = $token;
         }
         $res = $this->_searcher->find($mode, $request, $asynctoken, $minWidth, $minHeight);
     } catch (\Exception $e) {
         $res = ['error' => $e->getMessage()];
     }
     header('Content-Type: application/json');
     echo json_encode($res);
 }
 public function process()
 {
     $dir = dir($this->_tmpDir);
     if (!$dir) {
         return;
     }
     while (false !== ($entry = $dir->read())) {
         if (preg_match('/^([\\-0-9]+)_([\\-0-9]+)_(.+)\\.([^\\.]+)$/', $entry, $parts)) {
             $minX = $parts[1];
             $minY = $parts[2];
             $name = $parts[3];
             $ext = $parts[4];
             $file = $this->_tmpDir . '/' . $entry;
             switch ($ext) {
                 case 'gif':
                 case 'jpg':
                 case 'png':
                     $this->_searcher->find(true, $entry, $name, $minX, $minY);
                     @unlink($file);
                     break;
                 case 'url':
                     $url = trim(file_get_contents($file));
                     $this->_searcher->find(true, $url, $name, $minX, $minY);
                     @unlink($file);
                     break;
             }
         }
     }
     $dir->close();
 }