나는 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 스크립트와 동일한 위치에 있습니다.
어떤 방향으로도 도움이 될 것입니다. 미리 감사드립니다.
= 이전 스크립트를 시작 immrunner를 시작해야합니다 내가 iMacros 제작을 할 수 있지만 PHP한다. 이 질문에 대해 다른 사람들이 볼 수 있도록 위로 올려주세요. – macroscripts