Git Product home page Git Product logo

phantom-workers's Introduction

#phantom-workers NPM Version License Build Status

Run phantom scripts in multiple managed reusable workers

Running a script in phantom can soon become performance bottleneck when it comes to scale. Starting phantomjs process is not a cheap operation and you cannot start hundred of them at once. This package provides solution using phantomjs webserver and multiple phantomjs processes running in parallel.

##First create a phantomjs script wrapped in webserver

//every worker gets unique port, get it from a readline
var port = require("system").stdin.readLine();

require('webserver').create().listen('127.0.0.1:' + port, function (req, res) {
	//standard phantomjs script which get input parametrs from request
	var page = require('webpage').create();
	page.open(JSON.parse(req.post).url, function(status) {
    var title = page.evaluate(function() {
	    return document.title;
	});
	
	//write the result to the response
	res.statusCode = 200;
    res.write({ title: title });
    res.close();
});

##Start phantomjs workers

var phantom = require("phantom-workers")({
	pathToPhantomScript: "script.js",
	timeout: 5000,
	numberOfWorkers: 10
});

phantom.start(function() {
	phantom.excute({ url: "http://jsreport.net", function(err, res) {
		console.log(res.title);
	});
});

##Options

pathToPhantomScript (required) - absolute path to the phantom script
timeout - execution timeout in ms
numberOfWorkers - number of phantomjs instances
host - ip or hostname where to start listening phantomjs web service, default 127.0.0.1
portLeftBoundary - don't specify if you just want to take any random free port
portRightBoundary - don't specify if you just want to take any random free port

##License See license

phantom-workers's People

Contributors

araczkowski avatar pofider avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.