سؤال

أنا أكتب خادم ألعاب في node.js ، وبعض العمليات تتضمن حسابًا ثقيلًا على جزء من الخادم. لا أريد التوقف عن قبول الاتصالات أثناء تشغيل هذه الحسابات - كيف يمكنني تشغيلها في الخلفية عندما لا تدعم Node.js مؤشرات الترابط؟

هل كانت مفيدة؟

المحلول

لا أستطيع أن أؤكد أيًا من هذين ، شخصياً ، ولكن إذا كنت عازمًا بالقيام بالعمل أثناء العملية ، فقد كان هناك بعض التطبيقات المستقلة في واجهة برمجة تطبيقات Webworkers for Node ، كما هو مدرج في صفحة وحدات العقدة :

  • http://github.com/cramforce/node-work
  • http://github.com/pgriess/node-webworker

للوهلة الأولى ، تبدو الثانية أكثر نضجًا ، وسيسمح لك كلاهما بالقيام بشكل أساسي بالبرمجة الخيطية ، ولكنها عبارة عن طراز ممثل بشكل أساسي ، لذلك يتم كل ذلك مع تمرير الرسائل ، ولا يمكن أن يكون لديك هياكل بيانات أو أي شيء.

أيضًا ، بالنسبة إلى ما يستحق ، يعتزم فريق Node.js تنفيذ API على وجه التحديد ، في النهاية ، لذلك ، قد تكون هذه الأدوات ، حتى لو لم تكن مثالية ، بمثابة توقف لائق.

نصائح أخرى

var spawn = require('child_process').spawn;
listorwhatev = spawn('ls', ['-lh', '/usr']);//or whatever server action you need

//then you can attach events to that list like this
listorwhatev.on('exit', function(code){});

///or in this ls example as it streams info
listorwhatev.stdout.on('data', function(info){sys.puts(info);});

تأكد من حدوث عملية تفرخ مرة واحدة لكل تطبيق ثم تغذي الأشياء فيه ومشاهدتها للأحداث لكل اتصال. يجب عليك أيضًا التحقق من أن ListorWhateV لا يزال يعمل قبل التعامل معه. نظرًا لأننا جميعًا نحب هذه الأخطاء غير المطلوبة في العقدة التي تحطمت التطبيق ، لا نحن نحن ؛) عندما يتم الخروج من البيض (PID) على الرغم من القتل أو أي شيء سيء يحدث على جهازك ولم تخرج من تفرخ في الكود بأمان ، سوف يقوم معالج الحدث ببث تطبيق تطبيقك.

وبعض العمليات تتضمن حسابًا ثقيلًا على جزء من الخادم

كيف كتبت رمزًا ثقيلًا في المقام الأول. من الصعب جدًا القيام به في Node.js.

كيف يمكنني تشغيلها في الخلفية عندما لا تدعم node.js المواضيع

يمكنك أن تفرخ مثيلات العمال (العقدة) والتواصل مع قبول الاتصالات (مثيل العقدة) باستخدام POP على سبيل المثال Redis. Node.js Redis Library هي لا حظر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top