لاراول اکتان
- معرفی
- نصب و راه اندازی
- پیش نیازهای سرور
- ارائه برنامه شما
- تزریق وابستگی و اکتان
- مدیریت نشت حافظه
- وظایف همزمان
- تیک ها و فواصل
- اکتان کش
- جداول
معرفی
Laravel Octane با استفاده از سرورهای برنامه پرقدرت، از جمله FrankenPHP ، Open Swoole ، Swoole ، و RoadRunner ، عملکرد برنامه شما را افزایش می دهد . Octane یک بار برنامه شما را بوت می کند، آن را در حافظه نگه می دارد و سپس درخواست های آن را با سرعت مافوق صوت تغذیه می کند.
نصب و راه اندازی
Octane ممکن است از طریق مدیریت بسته Composer نصب شود:
composer require laravel/octane
پس از نصب Octane، می توانید
octane:install
دستور Artisan را اجرا کنید که فایل پیکربندی Octane را در برنامه شما نصب می کند:
php artisan octane:install
پیش نیازهای سرور
Laravel Octane به PHP 8.1+ نیاز دارد .
FrankenPHP
ادغام اکتان FrankenPHP در بتا است و باید در تولید با احتیاط استفاده شود.
FrankenPHP یک سرور برنامه کاربردی PHP است که در Go نوشته شده است و از ویژگی های وب مدرن مانند نکات اولیه و فشرده سازی Zstandard پشتیبانی می کند. هنگامی که Octane را نصب می کنید و FrankenPHP را به عنوان سرور خود انتخاب می کنید، Octane به طور خودکار باینری FrankenPHP را برای شما دانلود و نصب می کند.
FrankenPHP از طریق Laravel Sail
اگر قصد دارید برنامه خود را با استفاده از Laravel Sail توسعه دهید ، باید دستورات زیر را برای نصب Octane و FrankenPHP اجرا کنید:
./vendor/bin/sail up ./vendor/bin/sail composer require laravel/octane
در مرحله بعد، باید از
octane:install
دستور Artisan برای نصب باینری FrankenPHP استفاده کنید:
./vendor/bin/sail artisan octane:install --server=frankenphp
در نهایت یک
SUPERVISOR_PHP_COMMAND
متغیر محیطی به
laravel.test
تعریف سرویس در فایل اپلیکیشن خود اضافه کنید
docker-compose.yml
. این متغیر محیطی حاوی دستوری است که Sail از آن برای ارائه برنامه شما با استفاده از Octane به جای سرور توسعه PHP استفاده می کند:
services: laravel.test: environment: SUPERVISOR_PHP_COMMAND: "/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan octane:start --server=frankenphp --host=0.0.0.0 --admin-port=2019 --port=80" XDG_CONFIG_HOME: /var/www/html/config XDG_DATA_HOME: /var/www/html/data
برای فعال کردن HTTPS، HTTP/2، و HTTP/3، به جای آن، این تغییرات را اعمال کنید:
services: laravel.test: ports: - '${APP_PORT:-80}:80' - '${VITE_PORT:-5173}:${VITE_PORT:-5173}' - '443:443' - '443:443/udp' environment: SUPERVISOR_PHP_COMMAND: "/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan octane:start --host=localhost --port=443 --admin-port=2019 --https" XDG_CONFIG_HOME: /var/www/html/config XDG_DATA_HOME: /var/www/html/data
به طور معمول، شما باید از طریق به برنامه FrankenPHP Sail خود دسترسی داشته باشید
https://localhost
، زیرا استفاده از آن
https://127.0.0.1
نیاز به پیکربندی اضافی دارد و
دلسرد
می شود .
FrankenPHP از طریق Docker
استفاده از تصاویر رسمی Docker FrankenPHP می تواند عملکرد بهبود یافته و استفاده از پسوندهای اضافی را ارائه دهد که در نصب استاتیک FrankenPHP گنجانده نشده است. علاوه بر این، تصاویر رسمی Docker از اجرای FrankenPHP بر روی پلتفرم هایی که به صورت بومی پشتیبانی نمی کند، مانند ویندوز، پشتیبانی می کند. تصاویر رسمی Docker FrankenPHP هم برای توسعه محلی و هم برای استفاده تولید مناسب هستند.
میتوانید از Dockerfile زیر بهعنوان نقطه شروعی برای کانتینریسازی برنامه Laravel خود با فرانکن پیاچپی استفاده کنید:
FROM dunglas/frankenphp RUN install-php-extensions \ pcntl # Add other PHP extensions here... COPY . /app ENTRYPOINT ["php", "artisan", "octane:frankenphp"]
سپس، در طول توسعه، می توانید از فایل Docker Compose زیر برای اجرای برنامه خود استفاده کنید:
# compose.yamlservices: frankenphp: build: context: . entrypoint: php artisan octane:frankenphp --max-requests=1 ports: - "8000:8000" volumes: - .:/app
برای اطلاعات بیشتر در مورد اجرای FrankenPHP با Docker ، می توانید به اسناد رسمی FrankenPHP مراجعه کنید .
RoadRunner
RoadRunner توسط باینری RoadRunner که با استفاده از Go ساخته شده است، پشتیبانی میشود. اولین باری که سرور Octane مبتنی بر RoadRunner را راهاندازی میکنید، Octane دانلود و نصب باینری RoadRunner را برای شما پیشنهاد میکند.
RoadRunner از طریق Laravel Sail
اگر قصد دارید برنامه خود را با استفاده از Laravel Sail توسعه دهید ، باید دستورات زیر را برای نصب Octane و RoadRunner اجرا کنید:
./vendor/bin/sail up ./vendor/bin/sail composer require laravel/octane spiral/roadrunner-cli spiral/roadrunner-http
در مرحله بعد، باید یک پوسته Sail راه اندازی کنید و از
rr
فایل اجرایی برای بازیابی آخرین بیلد مبتنی بر لینوکس از RoadRunner باینری استفاده کنید:
./vendor/bin/sail shell # Within the Sail shell..../vendor/bin/rr get-binary
سپس، یک
SUPERVISOR_PHP_COMMAND
متغیر محیطی به
laravel.test
تعریف سرویس در فایل برنامه خود اضافه کنید
docker-compose.yml
. این متغیر محیطی حاوی دستوری است که Sail از آن برای ارائه برنامه شما با استفاده از Octane به جای سرور توسعه PHP استفاده می کند:
services: laravel.test: environment: SUPERVISOR_PHP_COMMAND: "/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan octane:start --server=roadrunner --host=0.0.0.0 --rpc-port=6001 --port=80"
در نهایت، مطمئن شوید که
rr
باینری قابل اجرا است و تصاویر Sail خود را بسازید:
chmod +x ./rr ./vendor/bin/sail build --no-cache
سوول
اگر قصد دارید از سرور برنامه Swoole برای ارائه برنامه Laravel Octane خود استفاده کنید، باید پسوند Swoole PHP را نصب کنید. به طور معمول، این را می توان از طریق PECL انجام داد:
pecl install swoole
Swoole را باز کنید
اگر می خواهید از سرور برنامه Open Swoole برای ارائه برنامه Laravel Octane خود استفاده کنید، باید افزونه Open Swoole PHP را نصب کنید. به طور معمول، این را می توان از طریق PECL انجام داد:
pecl install openswoole
استفاده از Laravel Octane با Open Swoole همان عملکرد ارائه شده توسط Swoole مانند وظایف همزمان، تیک ها و فواصل زمانی را به شما می دهد.
Swoole از طریق Laravel Sail
قبل از ارائه یک برنامه Octane از طریق Sail، مطمئن شوید که آخرین نسخه Laravel Sail را دارید و آن را
./vendor/bin/sail build --no-cache
در دایرکتوری ریشه برنامه خود اجرا کنید.
از طرف دیگر، میتوانید برنامه Octane مبتنی بر Swoole خود را با استفاده از
Laravel Sail
، محیط توسعه رسمی مبتنی بر Docker برای لاراول، توسعه دهید. Laravel Sail به طور پیش فرض شامل پسوند Swoole است. با این حال، همچنان باید
docker-compose.yml
فایل استفاده شده توسط Sail را تنظیم کنید.
برای شروع، یک
SUPERVISOR_PHP_COMMAND
متغیر محیطی به
laravel.test
تعریف سرویس در فایل برنامه خود اضافه کنید
docker-compose.yml
. این متغیر محیطی حاوی دستوری است که Sail از آن برای ارائه برنامه شما با استفاده از Octane به جای سرور توسعه PHP استفاده می کند:
services: laravel.test: environment: SUPERVISOR_PHP_COMMAND: "/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan octane:start --server=swoole --host=0.0.0.0 --port=80"
در نهایت، تصاویر بادبان خود را بسازید:
./vendor/bin/sail build --no-cache
پیکربندی Swoole
Swoole از چند گزینه پیکربندی اضافی پشتیبانی می کند که
octane
در صورت لزوم می توانید آنها را به فایل پیکربندی خود اضافه کنید. از آنجایی که به ندرت نیاز به اصلاح دارند، این گزینهها در فایل تنظیمات پیشفرض گنجانده نشدهاند:
'swoole' => [ 'options' => [ 'log_file' => storage_path('logs/swoole_http.log'), 'package_max_length' => 10 * 1024 * 1024, ],],
ارائه برنامه شما
سرور Octane را می توان از طریق
octane:start
دستور Artisan راه اندازی کرد. به طور پیش فرض، این دستور از سرور مشخص شده توسط
server
گزینه پیکربندی فایل پیکربندی برنامه شما استفاده می کند
octane
:
php artisan octane:start
بهطور پیشفرض، Octane سرور را روی پورت 8000 راهاندازی میکند، بنابراین میتوانید از طریق مرورگر وب به برنامه خود دسترسی داشته باشید
http://localhost:8000
.
ارائه برنامه شما از طریق HTTPS
بهطور پیشفرض، برنامههایی که از طریق Octane اجرا میشوند، پیوندهایی با پیشوند ایجاد میکنند
http://
. متغیر
OCTANE_HTTPS
محیطی که در فایل پیکربندی برنامه شما استفاده میشود ، میتواند
هنگام ارائه برنامه شما از طریق HTTPS
config/octane.php
روی آن تنظیم شود .
true
هنگامی که این مقدار پیکربندی روی تنظیم می شود
true
، Octane به لاراول دستور می دهد که تمام پیوندهای تولید شده را با پیشوند
https://
:
'https' => env('OCTANE_HTTPS', false),
ارائه برنامه شما از طریق Nginx
اگر برای مدیریت پیکربندی سرور خود کاملاً آماده نیستید یا با پیکربندی همه سرویس های مختلف مورد نیاز برای اجرای یک برنامه قوی Laravel Octane راحت نیستید، Laravel Forge را بررسی کنید .
در محیط های تولیدی، شما باید برنامه Octane خود را در پشت یک وب سرور سنتی مانند Nginx یا Apache ارائه دهید. انجام این کار به وب سرور اجازه می دهد تا به دارایی های ثابت شما مانند تصاویر و شیوه نامه ها سرویس دهد و همچنین خاتمه گواهی SSL شما را مدیریت کند.
در مثال پیکربندی Nginx زیر، Nginx داراییهای استاتیک و درخواستهای پراکسی سایت را به سرور Octane که روی پورت 8000 اجرا میشود، ارائه میکند:
map $http_upgrade $connection_upgrade { default upgrade; '' close;} server { listen 80; listen [::]:80; server_name domain.com; server_tokens off; root /home/forge/domain.com/public; index index.php; charset utf-8; location /index.php { try_files /not_exists @octane; } location / { try_files $uri $uri/ @octane; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } access_log off; error_log /var/log/nginx/domain.com-error.log error; error_page 404 /index.php; location @octane { set $suffix ""; if ($uri = /index.php) { set $suffix ?$query_string; } proxy_http_version 1.1; proxy_set_header Host $http_host; proxy_set_header Scheme $scheme; proxy_set_header SERVER_PORT $server_port; proxy_set_header REMOTE_ADDR $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_pass http://127.0.0.1:8000$suffix; }}
تماشای تغییرات فایل
از آنجایی که برنامه شما یک بار در هنگام راه اندازی سرور Octane در حافظه بارگذاری می شود، هر گونه تغییر در فایل های برنامه شما هنگام بازخوانی مرورگر خود منعکس نمی شود. به عنوان مثال، تعاریف مسیر اضافه شده به
routes/web.php
فایل شما تا زمانی که سرور راه اندازی مجدد نشود، منعکس نمی شود. برای راحتی، میتوانید از
--watch
پرچم برای دستور دادن به Octane برای راهاندازی خودکار سرور در هر تغییر فایل در برنامهتان استفاده کنید:
php artisan octane:start --watch
قبل از استفاده از این ویژگی، باید مطمئن شوید که Node در محیط توسعه محلی شما نصب شده است. علاوه بر این، باید کتابخانه تماشای فایل Chokidar را در پروژه خود نصب کنید:
npm install --save-dev chokidar
می توانید دایرکتوری ها و فایل هایی را که باید تماشا شوند با استفاده از گزینه پیکربندی در
فایل پیکربندی
watch
برنامه خود پیکربندی کنید.
config/octane.php
تعیین تعداد کارگران
بهطور پیشفرض، Octane برای هر هسته CPU ارائهشده توسط دستگاه شما، یک نرمافزار درخواست کاربر راهاندازی میکند. سپس از این کارگران برای ارائه درخواستهای HTTP ورودی هنگام ورود به برنامه شما استفاده میشود. می توانید به صورت دستی مشخص کنید که چه تعداد کارگر می خواهید
--workers
هنگام فراخوانی
octane:start
دستور شروع به استفاده از این گزینه کنید:
php artisan octane:start --workers=4
اگر از سرور برنامه کاربردی Swoole استفاده میکنید، میتوانید تعیین کنید که چه تعداد "کارگر" را میخواهید شروع کنید:
php artisan octane:start --workers=4 --task-workers=6
تعیین حداکثر تعداد درخواست
برای کمک به جلوگیری از نشت حافظه سرگردان، Octane به آرامی هر کارگری را پس از رسیدگی به 500 درخواست مجدداً راه اندازی می کند. برای تنظیم این عدد می توانید از
--max-requests
گزینه زیر استفاده کنید:
php artisan octane:start --max-requests=250
بارگیری مجدد کارگران
با استفاده از دستور، میتوانید بهخوبی کارگزاران برنامه سرور Octane را مجدداً راهاندازی کنید
octane:reload
. به طور معمول، این کار باید پس از استقرار انجام شود تا کد جدید مستقر شده شما در حافظه بارگذاری شود و برای ارائه به درخواستهای بعدی استفاده شود:
php artisan octane:reload
توقف سرور
می توانید سرور Octane را با استفاده از
octane:stop
دستور Artisan متوقف کنید:
php artisan octane:stop
بررسی وضعیت سرور
می توانید وضعیت فعلی سرور Octane را با استفاده از
octane:status
دستور Artisan بررسی کنید:
php artisan octane:status
تزریق وابستگی و اکتان
از آنجایی که Octane یک بار برنامه شما را بوت میکند و در حین ارائه درخواستها آن را در حافظه نگه میدارد، چند نکته وجود دارد که باید هنگام ساخت برنامه خود در نظر بگیرید. به عنوان مثال،
register
و
boot
متدهای ارائه دهندگان خدمات برنامه شما تنها یک بار در زمانی که درخواست کارگر در ابتدا بوت می شود، اجرا می شود. در درخواستهای بعدی، از همان نمونه برنامه دوباره استفاده میشود.
با توجه به این موضوع، هنگام تزریق کانتینر سرویس برنامه یا درخواست به سازنده هر شی، باید مراقب باشید. با انجام این کار، آن شی ممکن است یک نسخه قدیمی از کانتینر یا درخواست در درخواست های بعدی داشته باشد.
Octane به طور خودکار تنظیم مجدد هر حالت فریمورک شخص اول بین درخواست ها را انجام می دهد. با این حال، Octane همیشه نمی داند که چگونه حالت جهانی ایجاد شده توسط برنامه شما را بازنشانی کند. بنابراین، باید بدانید که چگونه برنامه خود را به گونه ای بسازید که اکتان پسند باشد. در زیر، ما در مورد رایج ترین موقعیت هایی که ممکن است در هنگام استفاده از اکتان مشکل ایجاد کنند، صحبت خواهیم کرد.
تزریق ظرف
به طور کلی، شما باید از تزریق کانتینر سرویس برنامه یا نمونه درخواست HTTP به سازنده اشیاء دیگر خودداری کنید. به عنوان مثال، اتصال زیر کل کانتینر سرویس برنامه کاربردی را به یک شی که به صورت تک تون محدود شده است تزریق می کند:
use App\Service;use Illuminate\Contracts\Foundation\Application; /** * Register any application services. */public function register(): void{ $this->app->singleton(Service::class, function (Application $app) { return new Service($app); });}
در این مثال، اگر
Service
نمونه در طول فرآیند بوت برنامه حل شود، کانتینر به سرویس تزریق می شود و همان ظرف
Service
در درخواست های بعدی توسط نمونه نگه داشته می شود. این
ممکن است
برای برنامه خاص شما مشکلی ایجاد نکند. با این حال، میتواند منجر به از دست رفتن غیرمنتظره اتصالات ظرف شود که بعداً در چرخه راهاندازی یا با درخواست بعدی اضافه شدند.
به عنوان یک راه حل، می توانید ثبت اتصال به صورت تکی را متوقف کنید یا می توانید یک بسته شدن حل کننده کانتینر را به سرویسی تزریق کنید که همیشه نمونه کانتینر فعلی را حل می کند:
use App\Service;use Illuminate\Container\Container;use Illuminate\Contracts\Foundation\Application; $this->app->bind(Service::class, function (Application $app) { return new Service($app);}); $this->app->singleton(Service::class, function () { return new Service(fn () => Container::getInstance());});
کمک کننده جهانی
app
و
Container::getInstance()
متد همیشه آخرین نسخه کانتینر برنامه را برمی گرداند.
درخواست تزریق
به طور کلی، شما باید از تزریق کانتینر سرویس برنامه یا نمونه درخواست HTTP به سازنده اشیاء دیگر خودداری کنید. به عنوان مثال، اتصال زیر کل نمونه درخواست را به یک شی که به صورت تکی محدود شده است تزریق می کند:
use App\Service;use Illuminate\Contracts\Foundation\Application; /** * Register any application services. */public function register(): void{ $this->app->singleton(Service::class, function (Application $app) { return new Service($app['request']); });}
در این مثال، اگر
Service
نمونه در طول فرآیند بوت برنامه حل شود، درخواست HTTP به سرویس تزریق می شود و همان درخواست
Service
در درخواست های بعدی توسط نمونه نگه داشته می شود. بنابراین، تمام هدرها، ورودی ها و داده های رشته پرس و جو و همچنین سایر داده های درخواستی نادرست خواهند بود.
به عنوان یک راه حل، می توانید ثبت اتصال به صورت تکی را متوقف کنید یا می توانید بسته شدن حل کننده درخواست را به سرویسی تزریق کنید که همیشه نمونه درخواست فعلی را حل می کند. یا، توصیهشدهترین رویکرد صرفاً ارسال اطلاعات درخواستی خاص است که شی شما به یکی از متدهای شی در زمان اجرا نیاز دارد:
use App\Service;use Illuminate\Contracts\Foundation\Application; $this->app->bind(Service::class, function (Application $app) { return new Service($app['request']);}); $this->app->singleton(Service::class, function (Application $app) { return new Service(fn () => $app['request']);}); // Or... $service->method($request->input('name'));
کمک کننده جهانی
request
همیشه درخواستی را که برنامه در حال حاضر رسیدگی می کند، برمی گرداند و بنابراین استفاده از آن در برنامه شما بی خطر است.
تایپ کردن
Illuminate\Http\Request
نمونه در روش های کنترلر و بسته شدن مسیر قابل قبول است.
پیکربندی تزریق مخزن
به طور کلی، باید از تزریق نمونه مخزن پیکربندی به سازنده اشیاء دیگر اجتناب کنید. به عنوان مثال، اتصال زیر مخزن پیکربندی را به یک شی که به صورت تکی محدود شده است تزریق می کند:
use App\Service;use Illuminate\Contracts\Foundation\Application; /** * Register any application services. */public function register(): void{ $this->app->singleton(Service::class, function (Application $app) { return new Service($app->make('config')); });}
در این مثال، اگر مقادیر پیکربندی بین درخواستها تغییر کند، آن سرویس به مقادیر جدید دسترسی نخواهد داشت زیرا به نمونه مخزن اصلی بستگی دارد.
به عنوان یک راه حل، می توانید ثبت اتصال را به صورت تکی متوقف کنید، یا می توانید بسته شدن حل کننده مخزن پیکربندی را به کلاس تزریق کنید:
use App\Service;use Illuminate\Container\Container;use Illuminate\Contracts\Foundation\Application; $this->app->bind(Service::class, function (Application $app) { return new Service($app->make('config'));}); $this->app->singleton(Service::class, function () { return new Service(fn () => Container::getInstance()->make('config'));});
جهانی
config
همیشه آخرین نسخه مخزن پیکربندی را برمی گرداند و بنابراین برای استفاده در برنامه شما بی خطر است.
مدیریت نشت حافظه
به یاد داشته باشید، Octane برنامه شما را بین درخواست ها در حافظه نگه می دارد. بنابراین، افزودن داده به آرایه ایستا حفظ شده منجر به نشت حافظه می شود. به عنوان مثال، کنترلر زیر دارای نشت حافظه است زیرا هر درخواست به برنامه همچنان داده ها را به
$data
آرایه استاتیک اضافه می کند:
use App\Service;use Illuminate\Http\Request;use Illuminate\Support\Str; /** * Handle an incoming request. */public function index(Request $request): array{ Service::$data[] = Str::random(10); return [ // ... ];}
هنگام ساخت برنامه خود، باید مراقب باشید تا از ایجاد این نوع نشت حافظه جلوگیری کنید. توصیه می شود در طول توسعه محلی، میزان استفاده از حافظه برنامه خود را کنترل کنید تا مطمئن شوید که نشت حافظه جدیدی را به برنامه خود وارد نمی کنید.
وظایف همزمان
این ویژگی به Swoole نیاز دارد .
هنگام استفاده از Swoole، می توانید عملیات را همزمان از طریق وظایف پس زمینه سبک اجرا کنید. شما می توانید این کار را با استفاده از روش Octane انجام دهید
concurrently
. شما می توانید این روش را با تخریب آرایه PHP ترکیب کنید تا نتایج هر عملیات را بازیابی کنید:
use App\Models\User;use App\Models\Server;use Laravel\Octane\Facades\Octane; [$users, $servers] = Octane::concurrently([ fn () => User::all(), fn () => Server::all(),]);
وظایف همزمان پردازش شده توسط Octane از "کارگران وظیفه" Swoole استفاده می کنند و در فرآیندی کاملاً متفاوت از درخواست دریافتی اجرا می شوند. تعداد کارگرانی که برای پردازش کارهای همزمان در دسترس هستند، توسط
--task-workers
دستورالعمل دستور زیر تعیین می شود
octane:start
:
php artisan octane:start --workers=4 --task-workers=6
هنگام فراخوانی
concurrently
روش، به دلیل محدودیت های اعمال شده توسط سیستم وظیفه Swoole، نباید بیش از 1024 کار ارائه دهید.
تیک ها و فواصل
این ویژگی به Swoole نیاز دارد .
هنگام استفاده از Swoole، می توانید عملیات "تیک" را ثبت کنید که در هر تعداد مشخص شده از ثانیه اجرا می شود. میتوانید از طریق
tick
روش، تماسهای «تیک» را ثبت کنید. اولین آرگومان ارائه شده به
tick
متد باید رشته ای باشد که نشان دهنده نام تیک باشد. آرگومان دوم باید فراخوانی باشد که در بازه زمانی مشخص شده فراخوانی شود.
در این مثال، ما یک بسته را ثبت می کنیم تا هر 10 ثانیه یک بار فراخوانی شود. به طور معمول، متد باید در
متد یکی از ارائه دهندگان خدمات برنامه شما
tick
فراخوانی شود :
boot
Octane::tick('simple-ticker', fn () => ray('Ticking...')) ->seconds(10);
با استفاده از این
immediate
روش، میتوانید به Octane دستور دهید که بلافاصله پس از راهاندازی سرور Octane، بلافاصله تیک را فراخوانی کند و پس از آن هر N ثانیه یکبار:
Octane::tick('simple-ticker', fn () => ray('Ticking...')) ->seconds(10) ->immediate();
اکتان کش
این ویژگی به Swoole نیاز دارد .
هنگام استفاده از Swoole، میتوانید از درایور حافظه پنهان Octane استفاده کنید که سرعت خواندن و نوشتن تا 2 میلیون عملیات در ثانیه را فراهم میکند. بنابراین، این درایور کش یک انتخاب عالی برای برنامه هایی است که به سرعت خواندن/نوشتن فوق العاده از لایه کش خود نیاز دارند.
این درایور کش توسط جداول Swoole ارائه می شود . تمام داده های ذخیره شده در حافظه نهان برای همه کارگران روی سرور در دسترس است. با این حال، هنگام راه اندازی مجدد سرور، داده های کش پاک می شوند:
Cache::store('octane')->put('framework', 'Laravel', 30);
حداکثر تعداد ورودی های مجاز در حافظه پنهان Octane ممکن است در
octane
فایل پیکربندی برنامه شما تعریف شود.
فواصل کش
علاوه بر روشهای معمولی که توسط سیستم کش لاراول ارائه میشود، درایور کش Octane دارای حافظههای پنهان مبتنی بر فاصله است. این کش ها به طور خودکار در بازه زمانی مشخص شده به روز می شوند و باید در
boot
روش یکی از ارائه دهندگان خدمات برنامه شما ثبت شوند. به عنوان مثال، کش زیر هر پنج ثانیه یکبار به روز می شود:
use Illuminate\Support\Str; Cache::store('octane')->interval('random', function () { return Str::random(10);}, seconds: 5);
جداول
این ویژگی به Swoole نیاز دارد .
هنگام استفاده از Swoole، می توانید جداول Swoole دلخواه خود را تعریف کرده و با آنها تعامل داشته باشید . جداول Swoole توان عملیاتی فوقالعادهای را ارائه میدهند و دادههای موجود در این جداول برای همه کارگران روی سرور قابل دسترسی است. با این حال، داده های موجود در آنها با راه اندازی مجدد سرور از بین می رود.
tables
جداول باید در آرایه پیکربندی فایل پیکربندی برنامه شما
تعریف شوند
octane
. یک جدول نمونه که حداکثر 1000 ردیف را مجاز میکند، قبلاً برای شما پیکربندی شده است. حداکثر اندازه ستونهای رشتهای را میتوان با تعیین اندازه ستون پس از نوع ستون، همانطور که در زیر مشاهده میکنید، پیکربندی کرد:
'tables' => [ 'example:1000' => [ 'name' => 'string:1000', 'votes' => 'int', ],],
برای دسترسی به جدول، می توانید از
Octane::table
روش زیر استفاده کنید:
use Laravel\Octane\Facades\Octane; Octane::table('example')->set('uuid', [ 'name' => 'Nuno Maduro', 'votes' => 1000,]); return Octane::table('example')->get('uuid');
انواع ستون های پشتیبانی شده توسط جداول Swoole عبارتند از:
string
,int
وfloat
.