---
title: "شغّل تطبيقًا وراقبه وادفع مقابله باستخدام erpc worker"
description: "اعرف هل يعمل تطبيقك وكم يكلّف بالساعة، وتراجع عن إطلاق، وقِس زمن استجابة RPC من الخادم، وانسخ بيانات حالته احتياطيًا، وأنهِ رسومه بالساعة."
canonical: "https://erpc.global/ar/doc/erpc-cli/worker-status-and-billing/"
locale: "ar"
---

# شغّل تطبيقًا وراقبه وادفع مقابله باستخدام erpc worker

يعرض `erpc worker status` ما إذا كان تطبيقك يعمل وكم يكلّف بالساعة. كل بدء يعرض سعره أولًا، و`erpc worker delete --release-server` يُنهي gRPC وShreds وUnlimited RPC التي يستخدمها التطبيق بالساعة، ثم خادمه بالساعة.

تصف هذه الصفحة ERPC CLI `v0.1.0-rc.4`، وهو إصدار تمهيدي.

## افحص تطبيقًا

```text
$ erpc worker status --env prod
api-prod on 203.0.113.10: running, release 20261101T093000Z-1a2b3c4d, pid 4217, up 2h 14m
  current 20261101T093000Z-1a2b3c4d, previous 20261028T171500Z-9f8e7d6c, 2 releases kept
  WAF: listening on port 8080, forwarding to 127.0.0.1:3000, since 2026-11-01T09:30:12Z; requests 5120, forwarded 5043, blocked 71, connections refused 12, app errors 6, addresses banned now 1
  `erpc worker delete --release-server --env prod` ends what this app is charged for.
```

يعرض `status` ما إذا كان التطبيق مقفلًا أو قيد التشغيل، وأي إطلاق، ومنذ متى. وعندما تكون مسجّل الدخول، يعرض أيضًا ما تكلّفه البيئة بالساعة، وكل بند مع السعر الذي يُفرض على حسابك مقابله، وERPC Credit الخاص بحسابك مع المدة التي يكفيها. ويحمل `--json` المعلومات نفسها تحت `hourly.charged`.

البند الذي ليس ضمن رسوم الحساب يُوصف بأنه ليس ضمنها، ولا يُسمّى منتهيًا، لأن تلك القائمة قد تتأخر عن البدء بدقيقة. وبلا جلسة، أو عندما تتعذر قراءة رسوم حسابك، يذكر `status` ما هو مُدوَّن.

## تحكّم في التطبيق

| الأمر | ما يفعله |
| --- | --- |
| `erpc worker logs -n 200`، `logs -f` | سجل التطبيق وسجل الوكيل. يُطبع أي حرف تحكم في السطر بالشكل `?` |
| `erpc worker start` | يشغّل التطبيق، ويرسل المفتاح عندما يكون الـ worker مقفلًا |
| `erpc worker stop`، `stop --lock` | يوقفه؛ ويحذف `--lock` أيضًا المفتاح من الذاكرة |
| `erpc worker restart` | يوقفه ثم يشغّله من جديد |
| `erpc worker releases` | الإطلاقات المحفوظة على الخادم (`deploy.keep_releases`) |
| `erpc worker rollback`، `rollback --to <release>` | يعود إلى الإطلاق السابق، أو إلى الإطلاق المسمّى. ويُرفض، مع ترك الإطلاق المستخدم على حاله، عندما يكون منفذ فحص الصحة لذلك الإطلاق تابعًا الآن لـ worker آخر قيد التشغيل |
| `erpc worker api <PATH>` | يقرأ API التطبيق من هذا الجهاز، مع بقاء الـ API على واجهة loopback في الخادم (`-X POST` و`-d '{...}'` لإجراء تغيير) |
| `erpc worker trades [--profit]` | صفقات التطبيق على خادمه |
| `erpc worker list` | التطبيقات على هذا الجهاز وأين نُشر كل منها؛ ويحذف `--prune` التطبيقات التي لم يعد `erpc.toml` الخاص بها موجودًا |

يُقرأ `API_TOKEN` الخاص بالتطبيق هنا ويصل إلى الخادم عبر الإدخال القياسي، لا في أي سطر أوامر ولا في أي سجل. يقبل كل أمر worker الخيارين `--env <name>` (الافتراضي `default`) و`--json`، باستثناء `secret unlock` و`secret lock` اللذين يخصّان مخزن المفاتيح على هذا الجهاز لا تطبيقًا، فلا يقبلان `--env`. وعند تشغيل الأمر من أي مكان، يجد تطبيقه بالاسم الذي يعرفه به erpc؛ أما `secret put` و`secret rm` و`key import` و`firewall allow` و`firewall deny` فلا تحدد التطبيق إلا عبر `--dir`.

## كيف تعمل الرسوم بالساعة

- **كل بدء يعرض سعره أولًا.** في الطرفية، لا يحدث البدء إلا بعد الإجابة بنعم؛ ومع `--yes`، يكون سطر الأوامر الذي يسمّي ما سيُبدأ هو تلك الإجابة بنعم.
- **يُدفع ثمن المنتج بالساعة من ERPC Credit**، الذي يُشترى مسبقًا، ويُرفض البدء الذي لا يغطيه ERPC Credit. تجد الأسعار في صفحة [الأسعار](https://erpc.global/ar/price/) وفي [ERPC Web Dashboard](https://dashboard.erpc.global/ar).
- **يُدوَّن خادم VPS الجديد بمجرد أن يُسمّى،** قبل أن يصبح جاهزًا. ويعتمده النشر التالي بدلًا من شراء خادم آخر.
- **في `deploy`، يُعاد إرسال البدء الذي لم يتلقَّ ردًا، ولا يُرسَل أبدًا كبدء جديد.** يبقى مفتاح طلبه مُدوَّنًا (`[env.<name>.starting]`)، لذا فإن تشغيل الأمر نفسه مرة أخرى يرسل الطلب نفسه. وبعد بعض الردود يبقى حتى تزيله يدويًا ([عملية شراء لا يستطيع erpc تدوينها](https://erpc.global/ar/doc/erpc-cli/worker-troubleshooting/#عملية-شراء-لا-يستطيع-erpc-تدوينها)). أما `erpc worker run` فلا يحتفظ بأي تدوين، لذا يُنشئ تشغيله التالي طلبًا جديدًا.
- **انشر بيئة واحدة في كل مرة.** قد يؤدي نشران للبيئة نفسها بُدئا معًا إلى شراء اثنين، وهذا غير مدعوم.
- **ما إذا كان الخط لا يزال موجودًا يحدده ما تُفرض على الحساب رسومه.** الخط الذي لا يُفوتَر بالساعة لا يُنهيه erpc أبدًا: أنهِه من لوحة التحكم.

## أزل تطبيقًا

يزيل `erpc worker delete` الـ worker. ويُنهي `erpc worker delete --release-server` أيضًا خطوطه، ثم خادمه بالساعة. ما تعذّر إنهاؤه يبقى مُدوَّنًا، ويُذكر اسم الخط الذي لا يُفوتَر بالساعة لتُنهيه من لوحة التحكم.

- يرفض الحذف العادي خادم VPS اشتُري ولم يُوصَل إليه قط، لأنه كان سينساه بينما تُفرض عليه الرسوم. أما الحذف العادي لخادم VPS بالساعة سبق الوصول إليه فيحذفه من التدوين بينما لا تزال تُفرض عليه الرسوم، ويحذّر من ذلك.
- مع `--forget` لا يحاول erpc الوصول إلى خادم لم يعد من الممكن الوصول إليه، ويحذف `--forget-line <id>` من التدوين خطًا أُنهي خارج erpc.

## قِس زمن استجابة RPC من الخادم

يقيس `erpc worker bench` توقيت استدعاءات RPC من خادم البيئة: RPC المشترك من ERPC، وUnlimited RPC الخاص بها، وأي RPC آخر، جنبًا إلى جنب. يقيس الوكيل على الخادم توقيت كل استدعاء، لذا فإن الأرقام هي ما يحصل عليه التطبيق.

```bash
erpc worker bench                                  # getSlot: shared RPC vs the Unlimited RPC
erpc worker bench --rounds 300 --interval 150      # for a plan that limits calls per second
erpc worker bench --url other=op://<vault-id>/<item-id>/url   # another provider's RPC
```

- يقبل `--method` القيم `getSlot` أو `getBlockHeight` أو `getLatestBlockhash` أو `getHealth`.
- يستبعد `--no-shared` الـ RPC المشترك. يمكن أن تكون قيمة `--url` عنوان URL نفسه، أو مرجع `op://…` أو `keychain:…` أو `keystore:…` (يشير إلى المكان الذي يُحفظ فيه عنوان URL يتضمن مفتاحًا؛ ولا يشير أبدًا إلى مُدخل مفتاح التداول، فذلك يُرفض)، أو `-` (تُقرأ من الإدخال القياسي، أو تُطلب منك وتكتبها دون أن تظهر). ويُرفض أكثر من ست نقاط نهاية.
- يطبع bench قيم p50 وp90 وp99 والحد الأدنى والحد الأقصى، وحالات الفشل مع السبب الأول، وعدد السلوتات التي تأخر بها كل رد عن الأحدث في الجولة نفسها.
- تصل المفاتيح إلى الخادم عبر الإدخال القياسي فقط، ويعرض الجدول المخطط والمضيف والمنفذ.

## النسخ الاحتياطي لبيانات حالة التطبيق

ينسخ `erpc worker backup on` بيانات حالة التطبيق احتياطيًا كل يوم إلى ERPC Global Storage، مشفّرة بواسطة restic، عند `--at` بتوقيت الخادم وخلال 30 دقيقة بعده. يلزم وجود خطة تخزين (`erpc storage buy 5`).

- **ما يُنسخ احتياطيًا** هو بيانات حالة التطبيق، `/var/lib/private/erpc-worker-<id>`. أما الإطلاقات فلا، لأن النشر يعيدها. ولا تشمل التغطية بيانات Redis وPostgreSQL.
- **لا يستطيع الخادم حذف اللقطات.** فهو لا يحمل أبدًا جلسة erpc، ولا مفتاح المسؤول للحساب، ولا كلمة المرور الرئيسية له.
- **الخادم الذي استُولي عليه يستطيع** أن يقرأ لقطات كل جهاز في الحساب، بما فيها لقطات هذا الجهاز؛ وأن يحتفظ بمفتاح المستودع، الذي لا يغيّره restic أبدًا، بعد `off`؛ وأن يضيف لقطات باسم جهاز آخر، لذا تحقّق مما يختاره `restore latest` بعد استيلاء كهذا؛ وأن يملأ مساحة التخزين في الحساب، مما يوقف النسخ الاحتياطي لكل الأجهزة. يُلغي `erpc worker backup off` مفتاح الوصول الخاص بالخادم أولًا، سواء أجاب الخادم أم لا.
- **ينسخ restic الملفات كما هي** أثناء عمل الـ worker، لذا قد تحتاج قاعدة البيانات إلى نسخة تفريغ خاصة بها لتُستعاد بحالة متسقة. والتشغيل الذي فات أثناء إيقاف الخادم يُنفَّذ عند عودته.
- يوقف `erpc worker backup off` و`status` و`now` النسخ الاحتياطي ويبلّغ عنه ويشغّله، على الترتيب. تبقى اللقطات بعد `off`، ويقلّل `erpc backup prune --host` عدد اللقطات القديمة.

استعِد من هذا الجهاز، بعد تشغيل `erpc backup init` عليه:

```bash
erpc backup restore latest --from-host erpc-worker-<id>-<tag> --path /var/lib/private/erpc-worker-<id> --target ./restored
```

## عدة بيئات وأجهزة

- عدة workers على خادم واحد يعمل كل منها كوحدة مستقلة، وتتشارك جدول جدار الحماية في الخادم، ولا يفتح كل منها إلا منفذه.
- يمكن أن يكون للتطبيق الواحد عدة بيئات (`[env.staging]`، `[env.prod]`)، لكل منها خادمها وخطوطها.
- يمكن للبيئة أن تحفظ معلومات خادمها في 1Password بدلًا من `erpc.toml`. عندئذ يستطيع أي جهاز مسجّل الدخول إلى تلك الخزنة، ومعه مستودع التطبيق، تشغيل كل أمر؛ ويُحذَّر من مراجع `keychain:` و`keystore:` في تطبيق كهذا، لأن جهازًا آخر لا يستطيع قراءتها. تحفظ البيئة الجديدة معلوماتها في 1Password عندما يحفظ `erpc login` الجلسة هناك؛ ويسمّي `deploy --vault <vault-id>` خزنة أخرى، ويحفظ `deploy --inline` المعلومات في `erpc.toml`.
