DELAYER(8) InterNetNews Documentation DELAYER(8)

delayer - یک پایپ برای ایجاد تاخیر زمانی مشخص در ورودی‌های مبتنی بر خط

some-program | delayer [--[no-]buffered] [--delay seconds] [--store filename] -- some-other-program [args ...]

روش فراخوانی قدیمی (Legacy):

some-program | delayer seconds some-other-program [args ...]

برنامه delayer یک پایپ تاخیرانداز را پیاده‌سازی می‌کند. خطوط ارسال‌شده به ورودی استاندارد فرآیند در صف موقت (spool) ذخیره می‌شوند و تنها پس از گذشت مدت زمان تاخیر تعیین‌شده، در ورودی استاندارد some-other-program نوشته (چاپ) می‌شوند.

مهم‌ترین کاربرد این برنامه برای فیدهای خبری است که عمداً نباید مقالات را در سریع‌ترین زمان ممکن توزیع کنند. یک دلیل این امر، دادن زمان کافی به پیام‌های NoCeM برای رسیدن است تا innd بتواند شناسه پیام (Message-ID) آن مقالات لغوشده را پیش از رسیدن واقعی آن‌ها ثبت کند. این ویژگی اجازه می‌دهد تا مقالات قبل از ذخیره‌سازی محلی و انتشار به سایر همتایان لغو گردند. این تاخیر را می‌توان برای فیدهای خروجی متقاضی این ویژگی تنظیم کرد یا، در روشی حتی بهتر برای جلوگیری از کاهش سرعت انتشار مقالات، به صورت داخلی میان یک نمونه فرانت‌اند از innd (که مقالات را از تمام همتایان شما دریافت می‌کند) و نمونه محلی دیگری از innd (که از فرانت‌اند شما و همراه با تاخیر، به جز برای مقالات NoCeM، تغذیه می‌شود) برقرار ساخت.

کاربرد دیگر، استفاده از پیوند ارتباطی صرفاً به عنوان یک مسیر پشتیبان (backup) است.

مراحل راه‌اندازی یک فید دارای تاخیر با استفاده از delayer و innfeed عبارتند از:

  • انتخاب یک نام برای آن فید؛ به عنوان مثال: "innfeed-delayed".
  • در دایرکتوری pathetc، فایل innfeed.conf را به innfeed-delayed.conf کپی کنید.
  • فایل innfeed-delayed.conf را در pathetc ویرایش کنید و موارد رخداد "innfeed" را به "innfeed-delayed" تغییر دهید؛ این تغییر معمولاً در پارامترهای log-file، pid-file و status-file اعمال می‌شود. اگر این پارامترها تنظیم نشده‌اند، باید آن‌ها را به طور صریح در innfeed-delayed.conf تنظیم کنید تا مقادیر پیش‌فرض آن‌ها با یک نمونه در حال اجرای همزمان از فید بلادرنگ که از innfeed استفاده می‌کند، تداخل پیدا نکنند. به عنوان مثال:
    log-file:    innfeed-delayed.log
    pid-file:    innfeed-delayed.pid
    status-file: innfeed-delayed.status

    استفاده از مقدار یکسان برای backlog-directory هم در innfeed.conf و هم در innfeed-delayed.conf مشکلی ایجاد نمی‌کند، زیرا نام‌های سایت در newsfeeds یکتا هستند (همان‌طور که در ادامه با "news.uu.net" و "news.uu.net-delayed" آورده شده است).

  • در صورت لزوم، پارامتر max-connections را به "1" محدود کنید.
  • در فایل innfeed-delayed.conf فقط پیکربندی همتایانی (peers) را نگه دارید که باید فید تاخیردار را دریافت کنند.
  • یک مدخل جدید به فایل newsfeeds در pathetc اضافه کنید، مانند:
    innfeed-delayed!\
        :!*\
        :Tc,Wnm*,S16384:<pathbin>/delayer --delay 300 -- \
            <pathbin>/innfeed -c innfeed-delayed.conf

    این پیکربندی مقالات ارسالی از طریق این فید را به مدت ۳۰۰ ثانیه به تاخیر می‌اندازد. اگر هدف، دادن زمان کافی به پیام‌های NoCeM برای رسیدن است، مقدار تاخیر باید با تواتر زمانی ارسال آن‌ها در گروه خبری news.lists.filters مطابقت داشته باشد.

  • به جای "innfeed!"، از "innfeed-delayed!" در مدخل‌های newsfeeds برای همتایانی که باید فید تاخیردار دریافت کنند استفاده کنید. در صورت تمایل، می‌توانید برای هر همتا دو مدخل تنظیم کنید: حفظ فید بلادرنگ از طریق "innfeed!" برای پیام‌های NoCeM، و ایجاد تاخیر در فید سایر مقالات از طریق "innfeed-delayed!".
    news.uu.net/uunet\
        :!*,news.lists.filters\
        :Tm:innfeed!
    news.uu.net-delayed/uunet\
        :*,@news.lists.filters\
        :Tm:innfeed-delayed!

    مقالات لغو (Cancel articles) نیز باید با تاخیر فرستاده شوند تا بعد از مقاله‌ای که آن را لغو می‌کنند برسند؛ در غیر این صورت INN قادر به احراز هویت آن‌ها (با استفاده از Cancel-Lock) نخواهد بود. لغوهای تاییدنشده به‌طور پیش‌فرض پردازش نمی‌شوند (گزینه docancels را در inn.conf ببینید)، اما اگر تصمیم به پردازش آن‌ها دارید، می‌توانید شبه‌گروه خبری control.cancel را نیز به عنوان یک فید بلادرنگ ارسال کنید.

    اطمینان حاصل کنید که دقیقاً از همان نام همتای "news.uu.net-delayed" در فایل innfeed-delayed.conf استفاده شده باشد. توجه داشته باشید که تنها در صورتی باید یک فید تاخیردار را برای یک همتای راه دور پیکربندی کنید که مدیر اخبار (news administrator) آن با این موضوع موافقت کرده باشد (زیرا ممکن است خواهان فید بلادرنگ باشد یا قبلاً به صورت محلی تاخیری روی فیدهای ورودی خود اعمال کرده باشد).

  • بارگذاری مجدد فایل پیکربندی newsfeeds:
    ctlinnd reload newsfeeds 'setting delayed feeds'

به‌طور پیش‌فرض، خروجی بافر می‌شود. این امر در صورتی که تعداد مقالات اندک باشد، زمان تا ارسال واقعی مقاله را افزایش می‌دهد. برای داشتن تاخیری دقیق‌تر، بافر کردن را غیرفعال کنید؛ البته به بهای اندکی سربار کارایی (که احتمالاً قابل چشم‌پوشی است).
به تاخیر انداختن مقالات به میزان ثانیه‌های مشخص‌شده. مقدار پیش‌فرض "60" است.
به‌طور پیش‌فرض، در صورت بسته شدن ورودی، تمام خطوط بافرشده بلافاصله در خروجی نوشته می‌شوند، حتی اگر زمان تاخیر تعیین‌شده هنوز فرا نرسیده باشد.

هنگامی که از این فلگ استفاده شود، این خطوط در عوض درون فایل مشخص‌شده ذخیره می‌شوند تا در راه‌اندازی بعدی مورد استفاده قرار گیرند. استفاده از نام مسیر مطلق توصیه می‌شود.

علامت -- گزینه‌های مربوط به delayer را از برنامه‌ای که خروجی در آن نوشته می‌شود جدا می‌کند: some-other-program مسیر کامل برنامه است که به صورت اختیاری با برخی پارامترهای args همراه می‌شود.

این رابط قدیمی (منسوخ) تلقی می‌شود و روزی حذف خواهد شد.

به تاخیر انداختن مقالات به میزان ثانیه‌های مشخص‌شده.
مسیر کامل برنامه‌ای که خروجی در آن نوشته می‌شود، که به صورت اختیاری می‌تواند با برخی پارامترهای args همراه باشد.

اگر ورودی استاندارد بسته شود (به عنوان مثال هنگامی که فید بسته یا بازراه‌اندازی شود)، تمام خطوط موجود در حافظه بلافاصله چاپ می‌شوند و قاعده تاخیر انداختن آن‌ها نقض می‌گردد، مگر اینکه از گزینه --store استفاده شده باشد.

اگر تعداد مقالات موجود در آن فید نسبتاً اندک باشد (تنها چند مقاله در هر بازه زمانی تاخیر یا کمتر)، برخی از اثرات بافرینگ ارسال مقالات را حتی بیش از پیش به تاخیر خواهند انداخت. برای کاهش این اثر، گزینه --no-buffering را مشاهده کنید.

نسخه اولیه در ژوئیه ۱۹۹۸ توسط Christian Mock <cm@tahina.priv.at> نوشته شد.

در ژانویه ۲۰۲۴ توسط Christoph Biedl بهبود یافته و مستندسازی شد.

delay(1), innfeed.conf(5), newsfeeds(5).

2026-06-22 INN 2.7.4