2013-02-25 2 views
2

나는 php 스크립트에서 iMacros를 실행하여 PHP 스크립트가 iMacros 브라우저 세션을 호출하고 내가 가진 모든 변수 (예 : URL 및 매크로 이름)를 전달하는 방법을 배우고 있습니다. iMacros 세션은 iMacro를 실행하고 매크로 실행이 끝나면 결과 HTML 페이지가 PHP 스크립트로 다시 전달되어 닫힙니다. 어쨌든 이상적인 세상에서. 여기 내 iMacro 스크립트가 내 PHP 스크립트에서 실행되지 않습니다. 왜?

는 iMacros 제작 스크립트 호출 :

<?php 

require 'src/iimfx.class.php'; 

$iim = new imacros(); 

$vars = array(); 

$iim->play($vars,'grab_data.iim'); 


?> 

그러나 내가 WAMP에서 cmd.exe를 [명령 줄]에서이 스크립트를 실행할 때,이 얻을 :

New imacros session started! 
Using Proxy: MY_PROXY_IP:MY_PROXY_PORT 
-runner -fx -fxProfile default 
-------------------------------------------------------- 
Setting Value IP => MY_PROXY_IP 
Setting Value port => MY_PROXY_PORT 
Playing Macro proxy.iim 
--------MACRO ERROR!------------------- 
ERROR: Browser was not started. iimInit() failed? 
-------------------------------------------------------- 
Playing Macro grab_google.iim 
--------MACRO ERROR!------------------- 
ERROR: Browser was not started. iimInit() failed? 

P.S.을 위의 오류 메시지와 iimfx.class.php에서 MY_PROXY_IP 및 MY_PROXY_PORT는 실제 숫자로 바뀝니다. 내가 여기에 놓친 거지 뭔가

<?php 

class imacros { 
    function __construct($proxyip = 'MY_PROXY_IP', $proxyport = 'MY_PROXY_PORT', $silent = false, $noexit = false) { 

     echo "--------------------------------------\nNew imacros session started!\nUsing Proxy: $proxyip:$proxyport\n"; 
     $this->proxyip = $proxyip; 
     $this->proxyport = $proxyport; 

     if (empty ($this->proxyip)) 
      echo "NO PROXY!!\n"; 

     $this->noexit = $noexit; 
     $this->fso = new COM ('Scripting.FileSystemObject'); 
     $this->fso = NULL; 

     $this->iim = new COM ("imacros"); 

     $toexec = "-runner -fx -fxProfile default"; 

     if ($silent === true) 
      $toexec .= " -silent"; 

     if ($noexit === true) 
      $toexec .= " -noexit"; 

     echo $toexec . "\n"; 

     $this->iim->iimInit ($toexec); 

     if (! empty ($this->proxyip)) { 
      $dvars ['IP'] = $this->proxyip; 
      $dvars ['port'] = $this->proxyport; 
      $this->play ($dvars, 'proxy.iim'); 
     } 
    } 

    function __destruct() { 
     if ($this->noexit === false) 
      $this->iim->iimExit(); 
    } 

    function play($immvars = '', $macro) { 

     echo "--------------------------------------------------------\n"; 

     if (is_array ($immvars)) { 
      foreach ($immvars as $key => $value) { 
       echo "Setting Value $key => $value\n"; 
       $this->iim->iimSet ("-var_" . $key, $value); 
      } 
     } 

     echo "Playing Macro $macro\n"; 
     $s = $this->iim->iimPlay ($macro); 

     if($s>0){ 
      echo "Macro successfully played!\n"; 
     }else{ 
      echo "--------MACRO ERROR!-------------------\n ERROR: " . $this->getLastError() . "\n"; 
     } 
     return $s; 
    } 

    // This function retrieves extracts in your iMacros script if you have any. 
    function getLastExtract($num) { 
     return $this->iim->iimGetLastExtract ($num); 
    } 

    // Returns the last error :) 
    function getLastError(){ 
     return $this->iim->iimGetLastError(); 
    } 

    // Enables/disables images 
    function setImages($images = 1) { // 1 = on 2 = off 

     $dvars ['images'] = $images; 
     $this->play ($dvars, 'images.iim'); 

    } 

    // Enables or disables adblockplus 
    function enableABP($status = true){ 

     $dvars['status'] = $status; 
     $this->play ($dvars, 'abp.iim'); 

    } 

} 

?> 

있습니까 : 여기

그리고는 iimfx.class.php에 대한 코드? 이 모든 동안 iimRunner.exe가 실행 중이며 [스크립트를 실행하기 전에 수동으로 시작했습니다.] iMacros 브라우저 V8 +가 있습니다. 또한, 내 grab_data.iim 및 기타 모든 필수 .iim은 호출하고 실행하려고하는 PHP 스크립트와 동일한 위치에 있습니다.

어떤 방향으로도 도움이 될 것입니다. 미리 감사드립니다.

+1

= 이전 스크립트를 시작 immrunner를 시작해야합니다 내가 iMacros 제작을 할 수 있지만 PHP한다. 이 질문에 대해 다른 사람들이 볼 수 있도록 위로 올려주세요. – macroscripts

답변