Eu não estou acostumado a trabalhar com o Linux, mas eu queria tentar usar slimerjs em um vps Linux para ter acesso à função exec do php, já que a maioria das empresas de hospedagem desativa essa função.
Consegui instalar o xampp, vsftpd, xulrunner, xvfb e slimerjs (versão standalone).
Quando executo o seguinte comando, o slimerjs é iniciado, mas apenas as funções console.log são chamadas:
xvfb-run ./slimerjs hello.js
Eu tentei adicionar o sudo no começo, mas o resultado é o mesmo.
Aqui está a "resposta" do comando acima:
Hi
6 XSELINUXs still allocated at reset
SCREEN: 0 objects of 132 bytes = 0 total bytes 0 private allocs
DEVICE: 0 objects of 64 bytes = 0 total bytes 0 private allocs
CLIENT: 0 objects of 112 bytes = 0 total bytes 0 private allocs
WINDOW: 0 objects of 20 bytes = 0 total bytes 0 private allocs
PIXMAP: 2 objects of 8 bytes = 16 total bytes 0 private allocs
GC: 4 objects of 8 bytes = 32 total bytes 0 private allocs
CURSOR: 0 objects of 4 bytes = 0 total bytes 0 private allocs
DBE_WINDOW: 0 objects of 12 bytes = 0 total bytes 0 private allocs
TOTAL: 6 objects, 48 bytes, 0 allocs
2 PIXMAPs still allocated at reset
PIXMAP: 2 objects of 8 bytes = 16 total bytes 0 private allocs
GC: 4 objects of 8 bytes = 32 total bytes 0 private allocs
CURSOR: 0 objects of 4 bytes = 0 total bytes 0 private allocs
DBE_WINDOW: 0 objects of 12 bytes = 0 total bytes 0 private allocs
TOTAL: 6 objects, 48 bytes, 0 allocs
4 GCs still allocated at reset
GC: 4 objects of 8 bytes = 32 total bytes 0 private allocs
CURSOR: 0 objects of 4 bytes = 0 total bytes 0 private allocs
DBE_WINDOW: 0 objects of 12 bytes = 0 total bytes 0 private allocs
TOTAL: 4 objects, 32 bytes, 0 allocs
./slimerjs: line 172: 4568 Aborted "$SLIMERJSLAUNCHER" -app $SLIMERDIR/application.ini $PROFILE -no-remote "$@" 2> /dev/null
/usr/bin/xvfb-run: line 171: kill: (4558) - No such process
Aqui está o conteúdo de hello.js
console.log("Hi");
var page = require("webpage").create();
console.log("Hi");
page.open("http://www.youtube.com/")
.then(function(status){
console.log("Hi");
if (status == "success") {
console.log("The title of the page is: "+ page.title);
}
else {
console.log("Sorry, the page is not loaded");
}
page.close();
setTimeout(function(){phantom.exit();},5000);
});
Apenas o primeiro console.log é executado. Se eu adicionar 10 console.logs consecutivos no início, todos eles serão executados. O próximo código não executa a função setTimeout
:
console.log("Hi");
setTimeout(function(){console.log("Hi");});
Para resumir: se, durante a execução do código, alguma outra coisa que não o console.log for encontrada, ele irá parar por aí.
Antes de tentar slimerjs eu tentei phantomjs e funciona perfeitamente! Eu não sei qual é o problema com slimerjs. Talvez porque estou tentando executá-lo com xvfb?