پایگاه دانش

توسعه محلی با zinnector dev

چگونه zinnector dev یک WordPress واقعی را روی دستگاه خودتان اجرا می‌کند: دو محیط‌ زمان اجرا (WebAssembly بدون Docker، یا PHP محلی در Docker)، انتخاب نسخه PHP و WordPress، آنچه از پروژه شما ارائه می‌شود، محل قرارگیری محیط زمان اجرای ۵۷۰ مگابایتی، و آنچه در Node 26 رخ می‌دهد.

دستور zinnector dev یک WordPress واقعی را روی دستگاه خودتان اجرا می‌کند و افزونه‌ها و پوسته‌های موجود در پروژه‌تان را با نسخه PHP انتخابی شما ارائه می‌دهد. این مقاله دو زمان اجرای (runtime) قابل استفاده، نحوه انتخاب نسخه‌ها، اینکه چه مواردی از کجا ارائه می‌شوند و زمان اجرا در کجای دیسک قرار می‌گیرد را توضیح می‌دهد — تا آنچه به‌صورت محلی آزمایش می‌کنید دقیقاً همان چیزی باشد که مستقر می‌کنید.

دو زمان اجرا، و اینکه چرا هر دو واقعی هستند

Playground گزینه پیش‌فرض است. WordPress Playground کد PHP را به WebAssembly کامپایل کرده و آن را درون Node اجرا می‌کند؛ بنابراین یک لپ‌تاپ که چیزی جز Node روی آن نصب نیست، ظرف چند ثانیه یک WordPress را راه‌اندازی می‌کند. هر نسخه PHP از 5.2 تا 8.5 در دسترس است. این محیط شامل مجموعه کوچکی از اکستنشن‌های PHP است (intl، redis و memcached طبق سنجش در بیلد فعلی) که برای بیشتر کارهای مربوط به افزونه و پوسته کافی است.

Docker کانتینرهای بومی php-fpm و MariaDB را اجرا می‌کند. این روش کندتر است، به یک دیمن Docker و حدود 1.2 گیگابایت ایمیج نیاز دارد و از PHP نسخه 7.4 تا 8.5 پشتیبانی می‌کند — اما یک PHP بومی را به همراه مجموعه کامل اکستنشن‌ها، از جمله imagick و gd، اجرا می‌نماید. هنگامی که نیاز به آزمایش اکستنشنی دارید که بیلد WebAssembly فاقد آن است، این روش راه‌حل واقعی است.

zinnector dev                       # playground
zinnector dev --runtime docker      # native PHP + MariaDB

هرگز به‌طور خودکار و پنهانی به Docker بازگشت داده نمی‌شود. توسعه‌دهنده‌ای که فکر می‌کند روی WebAssembly کار می‌کند در حالی که واقعاً روی Docker است، توسط ابزاری که قصد کمک داشته پاسخ اشتباهی دریافت کرده است؛ بنابراین باید صراحتاً با نام فراخوانی شود.

انتخاب نسخه‌های PHP و WordPress

zinnector dev --php 8.1 --wp 6.7    # develop against a specific pair
zinnector dev --port 9401           # when 9400 is taken
zinnector dev --no-login            # do not sign in to wp-admin automatically
zinnector dev --verbose             # show the runtime's own output

مقادیر پیش‌فرض از فایل zinnector.json در پروژه می‌آیند — مقادیر php، wordpress، runtime و port — که دستور zinnector new آن را می‌نویسد و شما باید آن را کامیت کنید تا همه افراد فعال در پروژه نسخه‌های یکسانی را اجرا کنند. یک فلگ در خط فرمان برای آن نوبتِ اجرا، اولویت بالاتری نسبت به فایل دارد.

نسخه‌ای که اعلام می‌کنید و نسخه‌ای که اجرا می‌شود دو واقعیت متفاوت هستند. دستور zinnector dev --once زمان اجرا را راه‌اندازی می‌کند، آنچه را که واقعاً گزارش می‌دهد چاپ می‌کند — نسخه PHP، نسخه WordPress، اکستنشن‌های بارگذاری‌شده — و متوقف می‌شود. دستور zinnector check --probe هنگام مقایسه پروژه شما با یک اسلات میزبانی، از همین سنجش استفاده می‌کند.

چه مواردی از پروژه شما ارائه می‌شود

زمان اجرا دایرکتوری‌های wp-content/plugins، wp-content/themes و wp-content/mu-plugins پروژه شما را مستقیماً مانت می‌کند؛ بنابراین فایلی که ذخیره می‌کنید در بارگذاری مجدد بعدی اعمال می‌شود. دایرکتوری‌هایی که وجود دارند اما حاوی محتوای واقعی نیستند، عمداً مانت نمی‌شوند: مانت شدن یک دایرکتوری خالی themes/ روی پوسته‌های خودِ زمان اجرا باعث می‌شود WordPress کاملاً بدون پوسته بماند، که به‌جای سایت شما خطای ۵۰۰ خالی ایجاد می‌کند. به همین دلیل ساختار اولیه دایرکتوری‌های خالی را با یک فایل .gitkeep نگه می‌دارد و تا زمانی که پوسته‌ای درون آن‌ها قرار ندهید، مانع از دسترسی به هیچ فایلی نمی‌شوند.

محل ذخیره‌سازی زمان اجرا

زمان اجرای WordPress به‌جای اینکه همراه با CLI عرضه شود، در اولین استفاده دانلود می‌شود — پکیجی که شامل تمام بیلدهای PHP است حدود ۵۷۰ مگابایت حجم دارد و توسعه‌دهنده‌ای که فقط سایت‌ها را فهرست می‌کند نباید هزینه دانلود آن را بپردازد. این فایل‌ها در کَش اختصاصی Zinnector®، مسیر ~/.cache/zinnector/runtimes/playground/<version> (یا هر جا که ZINNECTOR_CACHE_DIR اشاره کند)، ذخیره می‌شوند و هرگز در پروژه شما قرار نمی‌گیرند، بنابراین نمی‌توانند وارد ریپازیتوری شما یا ساختار درختی مورد ارزیابی zinnector push شوند. دانلود توسط npm خودتان و با اجرای node npm-cli.js انجام می‌شود — هرگز از طریق شل انجام نمی‌گیرد.

نسخه زمان اجرا به نسخه CLI قفل شده است، بنابراین دو توسعه‌دهنده روی یک پروژه بیلدهای PHP یکسانی را اجرا می‌کنند. دستور zinnector dev --reset-runtime زمان اجرای نصب‌شده را حذف کرده و مجدداً نصب می‌کند، که راه‌حل رفع مشکل زمان اجرایی است که نصب شده اما راه‌اندازی نمی‌شود.

روی Node 26 یا جدیدتر

خود CLI روی هر نسخه‌ای از Node از 24 به بالا اجرا می‌شود. با این حال، ماژول بومی زمان اجرا فقط برای Node 24 و 25 باینری‌های از پیش ساخته‌شده ارائه می‌دهد (تا سپتامبر ۲۰۲۶). به‌جای کامپایل هر چیزی — که در ویندوز به معنای نصب Visual Studio است — Zinnector® فقط برای زمان اجرا یک Node 24 (حدود ۳۰ مگابایت) را که بر اساس چکسام‌های منتشرشده در nodejs.org تأیید شده است، در همان کَش دانلود می‌کند. پیام اعلان نصب در صورت لزوم این موضوع را اعلام می‌کند. هیچ تغییری در Node اصلی شما ایجاد نمی‌شود.

موارد مرتبط

تمام اسناد توسعه‌دهنده →

جدیدترین‌های وبلاگ

آنچه درباره میزبانی وب، سئو و مدیریت سایت‌ها در مقیاس بزرگ نوشته‌ایم.

سئو و لینک‌سازی از لایه میزبانی: دیدگاه یک اپراتور در سال ۲۰۲۶

چگونه هاستینگ در سال ۲۰۲۶ بر ایندکس شدن و انتقال اعتبار لینک تأثیر می‌گذارد: حفظ صفحات در ایندکس، ارزیابی دامنه‌های قدیمی قبل از راه‌اندازی سایت روی آن‌ها، لینک‌سازی بدون ردپای سئو، و رویکردی واقع‌بینانه درباره اینکه زیرساخت چه کارهایی را می‌تواند و چه کارهایی را نمی‌تواند برای سئو انجام دهد.

خواندن مطلب ←

سریع و امن کردن WordPress: چک‌لیست عملکرد و افزونه‌ها

یک چک‌لیست کاربردی برای WordPress سریع و ایمن: کش کردن در سطح سرور، کش اشیاء به ازای هر سایت، تعداد اندک افزونه‌هایی که ارزش استفاده دارند، به‌روز نگه داشتن بسته نرم‌افزاری، و برگه های WooCommerce که هرگز نباید آن‌ها را کش کنید.

خواندن مطلب ←

نحوه انتخاب هاست مدیریت‌شده وب در سال ۲۰۲۶: راهنمای خریدار

چه چیزی واقعاً یک میزبانی مدیریت‌شده خوب را از یک جعبه ارزان‌قیمت دارای کنترل‌پنل متمایز می‌کند — مهاجرت‌ها، نسخه‌های پشتیبان، جداسازی، حافظه پنهان واقعی و مقیاس‌پذیری صادقانه — و چگونه پیش از تعهد، آن را ارزیابی کنید.

خواندن مطلب ←

وبلاگ را بخوانید ←

هنوز به مشکل برخورده‌اید؟

پشتیبانی در تمامی پلن‌ها گنجانده شده است، میز خدمت 24 ساعت در روز باز است و می‌توانید به هر یک از زبان‌های 58 ما برای ما بنویسید؛ ما به زبان شما پاسخ می‌دهیم.

تماس با پشتیبانی → همه مقاله‌ها →