Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jun 14th, 2012  |  syntax: JavaScript  |  size: 1.37 KB  |  hits: 22  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
This paste has a previous version, view the difference. Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. var http = require('http');
  2. var https = require('https');
  3. var parse = require('url').parse;
  4. var fs = require('fs');
  5.  
  6. var makeRequest = function (url, cb) {
  7.   console.log(url);
  8.   function callback(err, data) {
  9.     if (cb) {
  10.       cb(err, data);
  11.       cb = null;
  12.     }
  13.   }
  14.  
  15.   var urlInfo = parse(url);
  16.   var opt = {
  17.     path: urlInfo.path, port: urlInfo.port, host: urlInfo.hostname, headers: {'Connection': 'close'}
  18.   };
  19.  
  20.   var module = null;
  21.   if (urlInfo.protocol == 'https:') {
  22.     module = https;
  23.   } else {
  24.     module = http;
  25.   }
  26.   module.get(opt,
  27.     function (res) {
  28.       var ret = '';
  29.       res.on('data', function (data) {
  30.         ret += data.toString();
  31.       });
  32.       res.on('end', function () {
  33.         res.body = ret;
  34.         callback(null, res);
  35.       });
  36.       res.on('error', function (err) {
  37.         callback(err);
  38.       });
  39.     }).on('error', function (err) {
  40.       callback(err);
  41.     });
  42. };
  43.  
  44. var data = fs.readFileSync('data');
  45. var lines = data.toString().split("\n");
  46.  
  47. var count = lines.length;
  48.  
  49. var c = 10;
  50. var w = 0;
  51.  
  52. function goTrough() {
  53.   if (count == 0) { console.timeEnd("workers");  }
  54.  
  55.   while (w < c && lines.length > 0) {
  56.    var id = lines.pop();
  57.    makeRequest("http://google.com/" + id, function () {
  58.     count--;
  59.     w--;
  60.     goTrough();
  61.    });
  62.    w++;
  63.   }
  64. }
  65.  
  66. console.time("workers");
  67. goTrough();