کانال آموزشی لاراول
Photo
✨ یادگیری به سبک T-Shape: راز موفقیت در عرصههای چندرشتهای
📝 چرا یادگیری T-Shape اهمیت دارد؟
در دنیای پرتغییر امروز، داشتن تخصص عمیق در یک حوزه کافی نیست. یادگیری T-Shape به شما کمک میکند تا علاوه بر تخصص در یک زمینه، دانش کافی در حوزههای مختلف داشته باشید تا بتوانید در محیطهای کاری متنوع و پروژههای چندرشتهای بهتر عمل کنید.
🔸 بخش عمودی T (تخصص عمیق):
یادگیری T-Shape از این بخش شروع میشود. شما باید در یک حوزه خاص تخصص و مهارت عمیق داشته باشید. این میتواند هر چیزی از برنامهنویسی گرفته تا مدیریت، بازاریابی، یا حتی هنر باشد. تمرکز بر این حوزه باعث میشود که در آن زمینه یک متخصص واقعی شوید.
🔹بخش افقی T (دانش گسترده):
در این بخش، شما دانش پایهای در زمینههای متفاوت دیگر کسب میکنید. این دانش به شما کمک میکند تا درک بهتری از چگونگی تعامل و همکاری با افراد دیگر در تیمهای چندرشتهای داشته باشید. این مهارتها میتواند شامل دانش ابتدایی در مورد ارتباطات، مدیریت پروژه، و حتی فنون فروش باشد.
🎯 چرا این مدل یادگیری مفید است؟
- افزایش توانایی همکاری: با داشتن دانش در زمینههای مختلف، میتوانید بهتر با افراد از حوزههای گوناگون همکاری کنید.
- تقویت خلاقیت: ترکیب دانشهای مختلف میتواند منجر به ایدههای نوآورانه شود.
- انعطافپذیری در شغل: داشتن مهارتهای متنوع، شما را برای فرصتهای مختلف شغلی آماده میکند.
🌱 چگونه میتوانیم این مفهوم را در زندگی خود پیادهسازی کنیم؟
- ابتدا بر روی توسعه تخصص عمیق در یک حوزه تمرکز کنید.
- سپس، به دنبال فرصتهای یادگیری در سایر حوزهها باشید تا دیدگاه خود را گسترش دهید.
- شرکت در کارگاهها، دورههای آنلاین، و سمینارها در زمینههای متفاوت میتواند به شما در کسب دانش گسترده کمک کند.
- ایجاد شبکههای حرفهای با افرادی از حوزههای متفاوت به شما کمک میکند تا بینشهای جدید کسب کنید و از تجربیات آنها یاد بگیرید.
- همیشه به یاد داشته باشید که یادگیری یک فرآیند مداوم است و باید به دنبال راههای جدید برای توسعه مهارتها و دانش خود باشید.
💠 نتیجهگیری:
یادگیری T-Shape به شما این امکان را میدهد که در یک حوزه متخصص شوید و همزمان درک گستردهای از سایر زمینهها داشته باشید. این ترکیب از تخصص عمیق و دانش گسترده به شما کمک میکند تا در محیطهای کاری چندرشتهای برجسته شوید و مسیر حرفهای خود را به سمت موفقیتهای بزرگتر هدایت کنید.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
📝 چرا یادگیری T-Shape اهمیت دارد؟
در دنیای پرتغییر امروز، داشتن تخصص عمیق در یک حوزه کافی نیست. یادگیری T-Shape به شما کمک میکند تا علاوه بر تخصص در یک زمینه، دانش کافی در حوزههای مختلف داشته باشید تا بتوانید در محیطهای کاری متنوع و پروژههای چندرشتهای بهتر عمل کنید.
🔸 بخش عمودی T (تخصص عمیق):
یادگیری T-Shape از این بخش شروع میشود. شما باید در یک حوزه خاص تخصص و مهارت عمیق داشته باشید. این میتواند هر چیزی از برنامهنویسی گرفته تا مدیریت، بازاریابی، یا حتی هنر باشد. تمرکز بر این حوزه باعث میشود که در آن زمینه یک متخصص واقعی شوید.
🔹بخش افقی T (دانش گسترده):
در این بخش، شما دانش پایهای در زمینههای متفاوت دیگر کسب میکنید. این دانش به شما کمک میکند تا درک بهتری از چگونگی تعامل و همکاری با افراد دیگر در تیمهای چندرشتهای داشته باشید. این مهارتها میتواند شامل دانش ابتدایی در مورد ارتباطات، مدیریت پروژه، و حتی فنون فروش باشد.
🎯 چرا این مدل یادگیری مفید است؟
- افزایش توانایی همکاری: با داشتن دانش در زمینههای مختلف، میتوانید بهتر با افراد از حوزههای گوناگون همکاری کنید.
- تقویت خلاقیت: ترکیب دانشهای مختلف میتواند منجر به ایدههای نوآورانه شود.
- انعطافپذیری در شغل: داشتن مهارتهای متنوع، شما را برای فرصتهای مختلف شغلی آماده میکند.
🌱 چگونه میتوانیم این مفهوم را در زندگی خود پیادهسازی کنیم؟
- ابتدا بر روی توسعه تخصص عمیق در یک حوزه تمرکز کنید.
- سپس، به دنبال فرصتهای یادگیری در سایر حوزهها باشید تا دیدگاه خود را گسترش دهید.
- شرکت در کارگاهها، دورههای آنلاین، و سمینارها در زمینههای متفاوت میتواند به شما در کسب دانش گسترده کمک کند.
- ایجاد شبکههای حرفهای با افرادی از حوزههای متفاوت به شما کمک میکند تا بینشهای جدید کسب کنید و از تجربیات آنها یاد بگیرید.
- همیشه به یاد داشته باشید که یادگیری یک فرآیند مداوم است و باید به دنبال راههای جدید برای توسعه مهارتها و دانش خود باشید.
💠 نتیجهگیری:
یادگیری T-Shape به شما این امکان را میدهد که در یک حوزه متخصص شوید و همزمان درک گستردهای از سایر زمینهها داشته باشید. این ترکیب از تخصص عمیق و دانش گسترده به شما کمک میکند تا در محیطهای کاری چندرشتهای برجسته شوید و مسیر حرفهای خود را به سمت موفقیتهای بزرگتر هدایت کنید.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
🔥6👍3❤1👏1
کانال آموزشی لاراول
Photo
🛡Encrypting and Decrypting Data in Laravel
🛡رمزگذاری و رمزگشایی دادهها در لاراول
رمزگذاری برای حفاظت از اطلاعات حساس ضروری است تا اطمینان حاصل شود که هم در زمان ذخیرهسازی و هم در زمان انتقال امن باقی میمانند.
🔐 رمزگذاری در لاراول:
لاراول یک روش ساده برای رمزگذاری دادهها با استفاده از تابع
تابع
🔓 رمزگشایی در لاراول:
برای بازیابی دادههای اصلی، لاراول تابع
با رمزگشایی دادهها، میتوانید اطلاعات اصلی را بازیابی کرده و از آنها در برنامهتان استفاده کنید.
⚙️ مثال عملی:
بیایید یک مثال عملی در کنترلر لاراول در نظر بگیریم:
در این مثال، ما یک رشته را رمزگذاری و سپس آن را رمزگشایی میکنیم که سادگی فرآیند را نشان میدهد.
💡 استفاده از
برای راحتی بیشتر، لاراول از طریق نمایه Crypt، متدهای
این متدها یک نحو سادهتر را ارائه میدهند، که ادغام رمزگذاری و رمزگشایی را مستقیماً در کد شما آسانتر میکند.
🔔 نکات مهم:
- حفظ امنیت کلید رمزگذاری:
لاراول برای رمزگذاری به کلید APP_KEY مشخص شده در فایل env. شما تکیه میکند. مطمئن شوید که این کلید محرمانه نگه داشته میشود، زیرا هر کسی که به آن دسترسی داشته باشد، میتواند دادهها را رمزگشایی کند.
- سازگاری نسخه:
لاراول در حال تکامل است و syntax آن ممکن است در نسخههای مختلف متفاوت باشد. همیشه به مستندات رسمی برای نسخه لاراولی که استفاده میکنید مراجعه کنید.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
🛡رمزگذاری و رمزگشایی دادهها در لاراول
رمزگذاری برای حفاظت از اطلاعات حساس ضروری است تا اطمینان حاصل شود که هم در زمان ذخیرهسازی و هم در زمان انتقال امن باقی میمانند.
🔐 رمزگذاری در لاراول:
لاراول یک روش ساده برای رمزگذاری دادهها با استفاده از تابع
encrypt فراهم میکند. این تابع برای انجام رمزگذاری از کتابخانه OpenSSL استفاده میکند و امنیت بالایی را تضمین میکند.// رمزگذاری دادهها
$originalData = 'Hello, world!';
$encryptedData = encrypt($originalData);
تابع
encrypt دادههای اصلی را به نسخهای رمزگذاری شده و کدگذاری شده با base64 تبدیل میکند. این بهویژه زمانی مفید است که نیاز دارید اطلاعات حساس را در پایگاه دادهها ذخیره یا به صورت امن انتقال دهید.🔓 رمزگشایی در لاراول:
برای بازیابی دادههای اصلی، لاراول تابع
decrypt را ارائه میدهد. این تابع فرآیند رمزگذاری را معکوس کرده و دادهها را با استفاده از کلید رمزگذاری مناسب رمزگشایی میکند.// رمزگشایی دادهها
$decryptedData = decrypt($encryptedData);
با رمزگشایی دادهها، میتوانید اطلاعات اصلی را بازیابی کرده و از آنها در برنامهتان استفاده کنید.
⚙️ مثال عملی:
بیایید یک مثال عملی در کنترلر لاراول در نظر بگیریم:
use Illuminate\Support\Facades\Crypt;
class EncryptionController extends Controller
{
public function encryptAndDecrypt()
{
// رمزگذاری دادهها
$originalData = 'Hello, world!';
$encryptedData = encrypt($originalData);
// رمزگشایی دادهها
$decryptedData = decrypt($encryptedData);
// نمایش نتایج
return [
'original_data' => $originalData,
'encrypted_data' => $encryptedData,
'decrypted_data' => $decryptedData,
];
}
}
در این مثال، ما یک رشته را رمزگذاری و سپس آن را رمزگشایی میکنیم که سادگی فرآیند را نشان میدهد.
💡 استفاده از
encryptString و decryptString:برای راحتی بیشتر، لاراول از طریق نمایه Crypt، متدهای
encryptString و decryptString را فراهم میکند.$encryptedString = Crypt::encryptString('Hello, world!');
$decryptedString = Crypt::decryptString($encryptedString);این متدها یک نحو سادهتر را ارائه میدهند، که ادغام رمزگذاری و رمزگشایی را مستقیماً در کد شما آسانتر میکند.
🔔 نکات مهم:
- حفظ امنیت کلید رمزگذاری:
لاراول برای رمزگذاری به کلید APP_KEY مشخص شده در فایل env. شما تکیه میکند. مطمئن شوید که این کلید محرمانه نگه داشته میشود، زیرا هر کسی که به آن دسترسی داشته باشد، میتواند دادهها را رمزگشایی کند.
- سازگاری نسخه:
لاراول در حال تکامل است و syntax آن ممکن است در نسخههای مختلف متفاوت باشد. همیشه به مستندات رسمی برای نسخه لاراولی که استفاده میکنید مراجعه کنید.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍11🔥2
دوستان و همراهان عزیز، سلام! 👋
🕒 در دنیای پرمشغله امروز، یکی از مهمترین مهارتهایی که هر فردی نیاز دارد، "مدیریت زمان" و "اولویتبندی کارها" است.
🔍 ما در کانال اتاق برنامهنویسی </> قصد داریم به این موضوعات مهم گاهی بپردازیم و با ارائه اطلاعات، تکنیکها و راهکارهای کاربردی نگاهی به این مفاهیم داشته باشیم.
👀 ازینجا مسیر موضوع را دنبال کنید ...
👈🏻 🔗 هدفگذاری SMART
🕒 در دنیای پرمشغله امروز، یکی از مهمترین مهارتهایی که هر فردی نیاز دارد، "مدیریت زمان" و "اولویتبندی کارها" است.
🔍 ما در کانال اتاق برنامهنویسی </> قصد داریم به این موضوعات مهم گاهی بپردازیم و با ارائه اطلاعات، تکنیکها و راهکارهای کاربردی نگاهی به این مفاهیم داشته باشیم.
👀 ازینجا مسیر موضوع را دنبال کنید ...
👈🏻 🔗 هدفگذاری SMART
❤3🔥1👏1
کانال آموزشی لاراول
Video
🌐 What is a Sitemap ?
یک Sitemap نقشهای از وبسایت است که به موتورهای جستجو کمک میکند تا صفحات وبسایت شما را بهتر و سریعتر پیدا و ایندکس کنند. به زبان سادهتر، فهرستی از تمام صفحات موجود در وبسایت شماست که در قالبی قابل خواندن برای رباتهای جستجو ارائه میشود.
🧐 اهمیت Sitemap چیست؟
🔸بهبود ایندکسشدن:
با داشتن Sitemap، موتورهای جستجو میتوانند به راحتی صفحات جدید یا بهروزرسانیهای وبسایت شما را پیدا کنند.
🔸سازماندهی بهتر:
اگر وبسایت شما دارای تعداد زیادی صفحه یا محتوای پیچیده است، Sitemap به سازماندهی و دستهبندی محتوا کمک میکند.
🔸(بهینهسازی موتور جستجو) SEO :
به بهبود رتبهبندی وبسایت شما در نتایج جستجو کمک میکند، زیرا موتورهای جستجو بهتر میتوانند محتوای شما را درک کنند.
🛠 انواع Sitemap:
🔹Sitemap XML:
بیشتر برای موتورهای جستجو استفاده میشود و به آنها کمک میکند تا محتوای وبسایت را بهتر پیدا و ایندکس کنند.
🔹Sitemap HTML:
بیشتر برای کاربران است و به آنها کمک میکند تا به راحتی در وبسایت شما جستجو کرده و محتوای مورد نیاز خود را پیدا کنند.
🌟 در اپلیکیشن لاراول خود با استفاده از Spatie Sitemap نقشه سایت بسازید.
🔔 ایجاد دستی این نقشهها امکانپذیر است، و ما آموزشی در مورد نحوه ایجاد دستی نقشه سایت در اینجا داریم، اما یک پکیج با نام "laravel-sitemap" از Spatie ایجاد نقشه سایت را آسانتر از همیشه میکند.
⚙️ یکی از مزایای این بسته این است که دو روش برای ایجاد نقشه سایت فراهم میکند. اول اینکه میتواند به صورت خودکار سایت شما را جستجو کند و بر اساس پیوندهای داخلی آن را بسازد، یا اینکه میتوانید کنترل کامل داشته باشید و به صورت دستی آن را بسازید.
🔗 برای اطلاعات کامل در مورد راهاندازی، پیکربندی و استفاده از بسته در برنامه خود به پکیج رسمی مراجعه کنید.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
یک Sitemap نقشهای از وبسایت است که به موتورهای جستجو کمک میکند تا صفحات وبسایت شما را بهتر و سریعتر پیدا و ایندکس کنند. به زبان سادهتر، فهرستی از تمام صفحات موجود در وبسایت شماست که در قالبی قابل خواندن برای رباتهای جستجو ارائه میشود.
🧐 اهمیت Sitemap چیست؟
🔸بهبود ایندکسشدن:
با داشتن Sitemap، موتورهای جستجو میتوانند به راحتی صفحات جدید یا بهروزرسانیهای وبسایت شما را پیدا کنند.
🔸سازماندهی بهتر:
اگر وبسایت شما دارای تعداد زیادی صفحه یا محتوای پیچیده است، Sitemap به سازماندهی و دستهبندی محتوا کمک میکند.
🔸(بهینهسازی موتور جستجو) SEO :
به بهبود رتبهبندی وبسایت شما در نتایج جستجو کمک میکند، زیرا موتورهای جستجو بهتر میتوانند محتوای شما را درک کنند.
🛠 انواع Sitemap:
🔹Sitemap XML:
بیشتر برای موتورهای جستجو استفاده میشود و به آنها کمک میکند تا محتوای وبسایت را بهتر پیدا و ایندکس کنند.
🔹Sitemap HTML:
بیشتر برای کاربران است و به آنها کمک میکند تا به راحتی در وبسایت شما جستجو کرده و محتوای مورد نیاز خود را پیدا کنند.
🌟 در اپلیکیشن لاراول خود با استفاده از Spatie Sitemap نقشه سایت بسازید.
🔔 ایجاد دستی این نقشهها امکانپذیر است، و ما آموزشی در مورد نحوه ایجاد دستی نقشه سایت در اینجا داریم، اما یک پکیج با نام "laravel-sitemap" از Spatie ایجاد نقشه سایت را آسانتر از همیشه میکند.
⚙️ یکی از مزایای این بسته این است که دو روش برای ایجاد نقشه سایت فراهم میکند. اول اینکه میتواند به صورت خودکار سایت شما را جستجو کند و بر اساس پیوندهای داخلی آن را بسازد، یا اینکه میتوانید کنترل کامل داشته باشید و به صورت دستی آن را بسازید.
🔗 برای اطلاعات کامل در مورد راهاندازی، پیکربندی و استفاده از بسته در برنامه خود به پکیج رسمی مراجعه کنید.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
GitHub
GitHub - spatie/laravel-sitemap: Create and generate sitemaps with ease
Create and generate sitemaps with ease. Contribute to spatie/laravel-sitemap development by creating an account on GitHub.
❤5🔥1
کانال آموزشی لاراول
Photo
✨Generate PDFs in Laravel from Blade Views
پکیج Laravel PDF از Spatie، روشی ساده برای ایجاد فایلهای PDF در برنامههای Laravel فراهم میکند. این پکیج از نماهای Blade برای رندر کردن HTML استفاده میکند و سپس از آن نما برای ایجاد یک PDF با استفاده از Browsershot بهره میبرد.
این امر امکان استفاده از ابزارهای CSS مدرن مانند Grid و Flexbox، فریمورکهای CSS مدرن مانند Tailwind و حتی کدهای جاوااسکریپت برای مواردی مانند رندر کردن نمودارها را فراهم میکند.
🛠 در اینجا یک مثال ابتدایی از ایجاد یک PDF و بازگرداندن آن از یک کنترلر آورده شده است، که متغیرهایی را به template ارسال میکنید که میتوانید از آنها برای رندر داینامیک دادههای PDF استفاده کنید:
🔸پکیج Laravel PDF از ویژگیهای زیر پشتیبانی میکند:
- رندر PDFها از الگوهای Blade یا یک رشته HTML
- ذخیره یک PDF تولید شده در Laravel disk
- اجرای کد جاوااسکریپت هنگام ایجاد PDF
- تست فیک PDF با assertions قدرتمند
- تولید PDFها در Lambda از طریق Laravel Sidecar
- کنترل پیشرفته PDF با ابزارهایی مانند page breaks، سفارشیسازی Browsershot
- و موارد دیگر...
ایجاد PDFها در Laravel با استفاده از Blade، تولید PDFهای سفارشی زیبا را آسانتر و قدرتمندتر از همیشه خواهد کرد!
🔗 مستندات رسمی پکیج
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
پکیج Laravel PDF از Spatie، روشی ساده برای ایجاد فایلهای PDF در برنامههای Laravel فراهم میکند. این پکیج از نماهای Blade برای رندر کردن HTML استفاده میکند و سپس از آن نما برای ایجاد یک PDF با استفاده از Browsershot بهره میبرد.
این امر امکان استفاده از ابزارهای CSS مدرن مانند Grid و Flexbox، فریمورکهای CSS مدرن مانند Tailwind و حتی کدهای جاوااسکریپت برای مواردی مانند رندر کردن نمودارها را فراهم میکند.
🛠 در اینجا یک مثال ابتدایی از ایجاد یک PDF و بازگرداندن آن از یک کنترلر آورده شده است، که متغیرهایی را به template ارسال میکنید که میتوانید از آنها برای رندر داینامیک دادههای PDF استفاده کنید:
use Spatie\LaravelPdf\Facades\Pdf;
class DownloadInvoiceController
{
public function __invoke(Invoice $invoice)
{
return Pdf::view('pdfs.invoice', ['invoice' => $invoice])
->format('a4')
->name('your-invoice.pdf');
}
}
🔸پکیج Laravel PDF از ویژگیهای زیر پشتیبانی میکند:
- رندر PDFها از الگوهای Blade یا یک رشته HTML
- ذخیره یک PDF تولید شده در Laravel disk
- اجرای کد جاوااسکریپت هنگام ایجاد PDF
- تست فیک PDF با assertions قدرتمند
- تولید PDFها در Lambda از طریق Laravel Sidecar
- کنترل پیشرفته PDF با ابزارهایی مانند page breaks، سفارشیسازی Browsershot
- و موارد دیگر...
ایجاد PDFها در Laravel با استفاده از Blade، تولید PDFهای سفارشی زیبا را آسانتر و قدرتمندتر از همیشه خواهد کرد!
🔗 مستندات رسمی پکیج
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
GitHub
GitHub - spatie/laravel-pdf: Create PDF files in Laravel apps
Create PDF files in Laravel apps. Contribute to spatie/laravel-pdf development by creating an account on GitHub.
👍10🔥1
کانال آموزشی لاراول
Video
✨ هنگام شروع یک اپلیکیشن جدید Laravel، باید از Model::shouldBeStrict استفاده کنید.
شما ایدهای برای اپ جدید دارید. شما Laravel را نصب میکنید و آماده شروع هستید. اولین کاری که باید انجام دهید چیست؟
برای من، من به app service provider میروم و به متد
با فعال سازی این گزینه، کارهای زیر را انجام میدهد:
🛠 این سه کار را انجام میدهد:
1️⃣ Prevents lazy loading
دادهها فقط در زمان نیاز بارگذاری میشوند. در زمینه پایگاه دادهها، این بدان معناست که اطلاعات مرتبط با یک شیء خاص فقط زمانی بارگذاری میشود که صراحتا خواسته شده باشد. جلوگیری از این کار به معنای این است که برنامه باید تمام دادههای مورد نیاز را به صورت فعال و از پیش بارگذاری کند.
2️⃣ It prevents silently discarding attributes
این به معنای جلوگیری از حذف یا نادیده گرفتن خاموش ویژگیهایی است که ممکن است در فرایند بهروزرسانی یا ذخیرهسازی دادهها اتفاق بیفتد. در بسیاری از چارچوبها، اگر ویژگی خاصی در فرایند بهروزرسانی مشخص نشده باشد، به صورت خودکار حذف یا نادیده گرفته میشود. این مکانیزم برای جلوگیری از این رفتار و اطمینان از اینکه تمام ویژگیها به درستی مدیریت میشوند، به کار میرود.
3️⃣ It prevents accessing missing attributes
این عملکرد از دسترسی به ویژگیهایی که در یک شیء موجود نیستند، جلوگیری میکند. گاهی اوقات ممکن است تلاش شود تا به یک ویژگی که وجود ندارد دسترسی پیدا شود، که میتواند منجر به خطاهای زمان اجرا یا رفتارهای غیرمنتظره شود. این مکانیزم برای جلوگیری از این اتفاق و اطمینان از اینکه تنها به ویژگیهای موجود دسترسی پیدا میشود، استفاده میشود.
🔸Preventing Lazy Loading
در اینجا نمونهای آورده شده است.
اگر این کد را اجرا کنید، خروجی مورد انتظار شما را نشان میدهد. با این حال، این کد رابطه کاربر را به صورت lazy loading بارگیری میکند و در هر حلقه یک کوئری جدید ایجاد میکند.
با فعال بودن
🔸Prevents Silently Discarding Attributes
در اینجا نمونهای از تلاش برای بهروزرسانی یک ویژگی که قابل پر کردن نیست آورده شده است:
حالا این کد یک استثنا برمیگرداند:
🔸Prevents Accessing Missing Attributes
فرض کنید ما سعی داریم یک ویژگی در کاربر را نمایش دهیم که ممکن است وجود نداشته باشد:
به طور پیشفرض، Laravel چیزی نمایش نمیدهد زیرا ویژگی پیدا نمیشود، اما با فعال بودن حالت Strict شما دریافت میکنید:
این در مواردی که ممکن است اشتباه تایپی داشته باشید بسیار کمک میکند، مانند:
حالا، شما بازخورد فوری دریافت میکنید که اشتباه کردهاید.
فعال کردن
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
شما ایدهای برای اپ جدید دارید. شما Laravel را نصب میکنید و آماده شروع هستید. اولین کاری که باید انجام دهید چیست؟
برای من، من به app service provider میروم و به متد
boot پایین میآیم و Model::shouldBeStrict را به صورت global تنظیم میکنم:public function boot(): void
{
Model::shouldBeStrict();
}
با فعال سازی این گزینه، کارهای زیر را انجام میدهد:
public static function shouldBeStrict(bool $shouldBeStrict = true)
{
static::preventLazyLoading($shouldBeStrict);
static::preventSilentlyDiscardingAttributes($shouldBeStrict);
static::preventAccessingMissingAttributes($shouldBeStrict);
}
🛠 این سه کار را انجام میدهد:
1️⃣ Prevents lazy loading
دادهها فقط در زمان نیاز بارگذاری میشوند. در زمینه پایگاه دادهها، این بدان معناست که اطلاعات مرتبط با یک شیء خاص فقط زمانی بارگذاری میشود که صراحتا خواسته شده باشد. جلوگیری از این کار به معنای این است که برنامه باید تمام دادههای مورد نیاز را به صورت فعال و از پیش بارگذاری کند.
2️⃣ It prevents silently discarding attributes
این به معنای جلوگیری از حذف یا نادیده گرفتن خاموش ویژگیهایی است که ممکن است در فرایند بهروزرسانی یا ذخیرهسازی دادهها اتفاق بیفتد. در بسیاری از چارچوبها، اگر ویژگی خاصی در فرایند بهروزرسانی مشخص نشده باشد، به صورت خودکار حذف یا نادیده گرفته میشود. این مکانیزم برای جلوگیری از این رفتار و اطمینان از اینکه تمام ویژگیها به درستی مدیریت میشوند، به کار میرود.
3️⃣ It prevents accessing missing attributes
این عملکرد از دسترسی به ویژگیهایی که در یک شیء موجود نیستند، جلوگیری میکند. گاهی اوقات ممکن است تلاش شود تا به یک ویژگی که وجود ندارد دسترسی پیدا شود، که میتواند منجر به خطاهای زمان اجرا یا رفتارهای غیرمنتظره شود. این مکانیزم برای جلوگیری از این اتفاق و اطمینان از اینکه تنها به ویژگیهای موجود دسترسی پیدا میشود، استفاده میشود.
🔸Preventing Lazy Loading
در اینجا نمونهای آورده شده است.
$articles = \App\Models\Article::get();
foreach ($articles as $article) {
echo "<li>" . $article->user->name . "</li>\n";
}
اگر این کد را اجرا کنید، خروجی مورد انتظار شما را نشان میدهد. با این حال، این کد رابطه کاربر را به صورت lazy loading بارگیری میکند و در هر حلقه یک کوئری جدید ایجاد میکند.
با فعال بودن
shouldBeStrict به جای اجرای کد، یک خطا دریافت میکنید که بازخورد فوری به شما میدهد:Attempted to lazy load [user] on model [App\Models\Article] but lazy loading is disabled.🔸Prevents Silently Discarding Attributes
در اینجا نمونهای از تلاش برای بهروزرسانی یک ویژگی که قابل پر کردن نیست آورده شده است:
$user->fill(["remember_token" => "bar"]);
حالا این کد یک استثنا برمیگرداند:
Add fillable property [remember_token] to allow mass assignment on [App\Models\User].🔸Prevents Accessing Missing Attributes
فرض کنید ما سعی داریم یک ویژگی در کاربر را نمایش دهیم که ممکن است وجود نداشته باشد:
{{ $user->nonexistant }}به طور پیشفرض، Laravel چیزی نمایش نمیدهد زیرا ویژگی پیدا نمیشود، اما با فعال بودن حالت Strict شما دریافت میکنید:
The attribute [nonexistant] either does not exist or was not retrieved for model [App\Models\User].این در مواردی که ممکن است اشتباه تایپی داشته باشید بسیار کمک میکند، مانند:
{{ $user->emial }}حالا، شما بازخورد فوری دریافت میکنید که اشتباه کردهاید.
فعال کردن
()Model::shouldBeStrict حالا اولین کاری است که من در هر اپ انجام میدهم و به من کمک میکند تا از اشتباهات پایهای که ممکن است برای اپ بعدا زیانآور باشد، جلوگیری کنم.✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍26❤6👏1
کانال آموزشی لاراول
Photo
✨ دربارهی
در دنیای برنامهنویسی وب، اطمینان از اینکه دادههای شما به درستی و با امنیت در دیتابیس ذخیره میشوند، حیاتی است. لاراول، ابزارهایی قدرتمند برای مدیریت این موضوعات ارائه میدهد. یکی از این ابزارها،
🧐 چیستی
در لاراول،
💡 کاربردهای
🔸 اطمینان از صحت و یکپارچگی دادهها:
هنگامی که چندین عملیات دیتابیس باید به صورت یک مجموعه کامل اجرا شوند.
🔸جلوگیری از تضادهای دادهای:
وقتی که عملیات مختلف بر روی یکسری دادهها همزمان انجام میشوند.
🔸کنترل بهتر بر عملیاتهای پیچیده:
کمک به سازماندهی و مدیریت عملیاتهای دیتابیس که باید به ترتیب خاصی انجام شوند.
🛠 چگونگی استفاده از
1️⃣ تعریف تراکنش:
ابتدا با استفاده از
2️⃣ اجرای عملیات:
انجام سری عملیات دیتابیس که میخواهید در تراکنش گنجانده شوند.
3️⃣ تایید تراکنش:
در صورتی که همه عملیات با موفقیت انجام شدند، با
4️⃣ بازگشت در صورت خطا:
در صورت بروز خطا در هر یک از عملیات، با
⚙️ مثال عملی:
در این مثال، دو عملیات آپدیت و حذف به صورت همزمان اجرا میشوند. اگر هر دو عملیات با موفقیت انجام شوند، تراکنش تایید میشود. در غیر این صورت، هیچکدام از تغییرات اعمال نمیشوند.
🔔 نکات کلیدی:
- استفاده از
- همیشه باید در نظر داشت که تراکنشها میتوانند بر عملکرد کلی سیستم تأثیر بگذارند، بنابراین باید با دقت استفاده شوند.
- لاراول امکان مدیریت خطاها و بازگشت از تراکنشها را به راحتی فراهم میآورد.
🚀 خلاصه:
در لاراول
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
DB::transactionدر دنیای برنامهنویسی وب، اطمینان از اینکه دادههای شما به درستی و با امنیت در دیتابیس ذخیره میشوند، حیاتی است. لاراول، ابزارهایی قدرتمند برای مدیریت این موضوعات ارائه میدهد. یکی از این ابزارها،
DB::transaction است.🧐 چیستی
DB::transaction:در لاراول،
DB::transaction یک روش برای اجرای دستهای از عملیات دیتابیس است که تضمین میکند این عملیات یا همگی با موفقیت انجام میشوند، یا هیچکدام اجرا نمیشوند. این مفهوم در دنیای دیتابیس با نام ' تراکنش ' شناخته میشود.💡 کاربردهای
DB::transaction:🔸 اطمینان از صحت و یکپارچگی دادهها:
هنگامی که چندین عملیات دیتابیس باید به صورت یک مجموعه کامل اجرا شوند.
🔸جلوگیری از تضادهای دادهای:
وقتی که عملیات مختلف بر روی یکسری دادهها همزمان انجام میشوند.
🔸کنترل بهتر بر عملیاتهای پیچیده:
کمک به سازماندهی و مدیریت عملیاتهای دیتابیس که باید به ترتیب خاصی انجام شوند.
🛠 چگونگی استفاده از
DB::transaction:1️⃣ تعریف تراکنش:
ابتدا با استفاده از
()DB::beginTransaction تراکنش را شروع کنید.2️⃣ اجرای عملیات:
انجام سری عملیات دیتابیس که میخواهید در تراکنش گنجانده شوند.
3️⃣ تایید تراکنش:
در صورتی که همه عملیات با موفقیت انجام شدند، با
()DB::commit تراکنش را تایید کنید.4️⃣ بازگشت در صورت خطا:
در صورت بروز خطا در هر یک از عملیات، با
()DB::rollback تغییرات انجامشده را بازگردانید تا دادهها به حالت اولیه بازگردند.⚙️ مثال عملی:
use Illuminate\Support\Facades\DB;
DB::transaction(function () {
DB::table('users')->update(['votes' => 1]);
DB::table('posts')->delete();
}, 5);
در این مثال، دو عملیات آپدیت و حذف به صورت همزمان اجرا میشوند. اگر هر دو عملیات با موفقیت انجام شوند، تراکنش تایید میشود. در غیر این صورت، هیچکدام از تغییرات اعمال نمیشوند.
🔔 نکات کلیدی:
- استفاده از
DB::transaction برای عملیاتهایی که نیاز به یکپارچگی داده دارند، ضروری است.- همیشه باید در نظر داشت که تراکنشها میتوانند بر عملکرد کلی سیستم تأثیر بگذارند، بنابراین باید با دقت استفاده شوند.
- لاراول امکان مدیریت خطاها و بازگشت از تراکنشها را به راحتی فراهم میآورد.
🚀 خلاصه:
در لاراول
DB::transaction یک روش قدرتمند برای مدیریت تراکنشهای دیتابیس است که به توسعهدهندگان کمک میکند تا از یکپارچگی و صحت دادهها اطمینان حاصل کنند. این ابزار برای پروژههایی که نیاز به عملیاتهای دیتابیس پیچیده دارند، بسیار مفید است.✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍8❤6🔥1
کانال آموزشی لاراول
Photo
✨ معرفی فریمورک Lumen - نسخهی میکروی Laravel
🔸یک پروژهی جدید و میکرو-فریمورک، توسط Taylor Otwell، خالق اصلی فریمورک Laravel، به عرصهی برنامهنویسی معرفی شده است. Lumen را میتوان نسخهای سبکوزن، سریع و ظریف از Laravel دانست، که بهویژه برای توسعهی میکروسرویسها و APIهای واکنشگرا در زبان PHP طراحی شده است.
🚀 چرا Lumen؟
📈 سرعت بالا: Lumen با قدرت بیش از 1,700 درخواست در ثانیه، سریعتر از همتایان خود Slim (1,250 درخواست/ثانیه) و Silex (950 درخواست/ثانیه) است.
🛠 کدنویسی ساده: با سینتکسی ساده و کاربرپسند، کدنویسی در Lumen برای توسعهدهندگان بسیار راحت است.
🔄 قابلیت ارتقا به Laravel: شما میتوانید در هر زمانی پروژهی Lumen خود را به یک پروژهی کامل Laravel ارتقا دهید.
⚙️ ویژگیهای کلیدی: شامل سیستمهایی چون Fast Route، Event Management، Authentication با توکنها، Caching، Error Logging با استفاده از Monolog و Queuing.
🔍 Laravel یا Lumen ?
- لاراول یک فریمورک کامل و جامع برای توسعهی وب است، در حالی که لومن بهعنوان یک میکرو-فریمورک برای ساختن میکروسرویسها و APIها طراحی شده است.
- لومن (lumen) برخی از ویژگیهای Laravel مانند سشنها، کوکیها و تمپلیتها را حذف کرده تا سبکتر و تخصصیتر باشد.
📚 نیازمندیهای Lumen:
برای استفاده از Lumen، شما به PHP با افزونههای OpenSSL، PDO و Mbstring نیاز دارید و همچنین باید Composer را نصب کنید.
❌ چرا ممکن است Lumen مناسب شما نباشد؟
- لومن تنظیمات محدودتری نسبت به Laravel دارد.
- اگر نیاز به ویژگیهای پیچیدهی Routing سیستم Symfony دارید، Laravel گزینهی بهتری است.
- لومن کمتر شناختهشده است و کمتر مورد استفاده قرار گرفته نسبت به Laravel.
🏁 جمعبندی:
لومن (lumen)، میکروفریمورکی مدرن و سریع برای PHP، انتخاب عالی برای توسعهی میکروسرویسها و APIهای سریع و کارآمد است. با این حال، اگر نیاز به قابلیتهای جامعتری دارید، Laravel ممکن است انتخاب بهتری باشد.
👍 نصب و تست Lumen ساده است و ارزش امتحان کردن را دارد. هر زمان که بخواهید، میتوانید Lumen را به یک پروژهی کامل Laravel ارتقا دهید.
🔗 وبسایت رسمی Lumen
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
🔸یک پروژهی جدید و میکرو-فریمورک، توسط Taylor Otwell، خالق اصلی فریمورک Laravel، به عرصهی برنامهنویسی معرفی شده است. Lumen را میتوان نسخهای سبکوزن، سریع و ظریف از Laravel دانست، که بهویژه برای توسعهی میکروسرویسها و APIهای واکنشگرا در زبان PHP طراحی شده است.
🚀 چرا Lumen؟
📈 سرعت بالا: Lumen با قدرت بیش از 1,700 درخواست در ثانیه، سریعتر از همتایان خود Slim (1,250 درخواست/ثانیه) و Silex (950 درخواست/ثانیه) است.
🛠 کدنویسی ساده: با سینتکسی ساده و کاربرپسند، کدنویسی در Lumen برای توسعهدهندگان بسیار راحت است.
🔄 قابلیت ارتقا به Laravel: شما میتوانید در هر زمانی پروژهی Lumen خود را به یک پروژهی کامل Laravel ارتقا دهید.
⚙️ ویژگیهای کلیدی: شامل سیستمهایی چون Fast Route، Event Management، Authentication با توکنها، Caching، Error Logging با استفاده از Monolog و Queuing.
🔍 Laravel یا Lumen ?
- لاراول یک فریمورک کامل و جامع برای توسعهی وب است، در حالی که لومن بهعنوان یک میکرو-فریمورک برای ساختن میکروسرویسها و APIها طراحی شده است.
- لومن (lumen) برخی از ویژگیهای Laravel مانند سشنها، کوکیها و تمپلیتها را حذف کرده تا سبکتر و تخصصیتر باشد.
📚 نیازمندیهای Lumen:
برای استفاده از Lumen، شما به PHP با افزونههای OpenSSL، PDO و Mbstring نیاز دارید و همچنین باید Composer را نصب کنید.
❌ چرا ممکن است Lumen مناسب شما نباشد؟
- لومن تنظیمات محدودتری نسبت به Laravel دارد.
- اگر نیاز به ویژگیهای پیچیدهی Routing سیستم Symfony دارید، Laravel گزینهی بهتری است.
- لومن کمتر شناختهشده است و کمتر مورد استفاده قرار گرفته نسبت به Laravel.
🏁 جمعبندی:
لومن (lumen)، میکروفریمورکی مدرن و سریع برای PHP، انتخاب عالی برای توسعهی میکروسرویسها و APIهای سریع و کارآمد است. با این حال، اگر نیاز به قابلیتهای جامعتری دارید، Laravel ممکن است انتخاب بهتری باشد.
👍 نصب و تست Lumen ساده است و ارزش امتحان کردن را دارد. هر زمان که بخواهید، میتوانید Lumen را به یک پروژهی کامل Laravel ارتقا دهید.
🔗 وبسایت رسمی Lumen
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
Laravel
Installation - Lumen - PHP Micro-Framework By Laravel
Lumen - The Stunningly Fast PHP Micro-Framework By Laravel
👍8❤1🔥1👏1
کانال آموزشی لاراول
Photo
✨ درک Memoization در لاراول
یک تکنیک بهینهسازی است که برای افزایش سرعت اجرای برنامهها با ذخیرهسازی نتایج عملیاتهای پرهزینه (مانند فراخوانیهای تابع یا دسترسیهای پایگاه داده) و استفاده مجدد از این نتایج در فراخوانیهای بعدی به جای انجام مجدد عملیات استفاده میشود.
🛠 کاربرد Memoization در لاراول
در لاراول، memoization میتواند به خصوص در بهینهسازی عملکرد کوئریهای پایگاه داده، محاسبات پیچیده یا فراخوانیهای API که زمان و منابع زیادی را مصرف میکنند، مفید باشد. با ذخیرهسازی نتیجه این عملیاتها، لاراول میتواند به سرعت به دادههای قبلاً محاسبهشده دسترسی پیدا کند و از انجام مجدد کوئریها یا محاسبات جلوگیری کند.
🧐 چگونگی استفاده از Memoization
1️⃣ تعریف کش: ابتدا باید یک مکانیسم برای ذخیرهسازی و بازیابی نتایج ایجاد کنید. در لاراول، میتوانید از سیستم کش از پیش ساختهشده استفاده کنید.
2️⃣ کدنویسی تابع با Memoization: هنگام نوشتن تابعی که قرار است از memoization استفاده کند، باید ابتدا بررسی کنید که آیا نتیجه عملیات قبلاً محاسبه و ذخیره شده است یا خیر. اگر نتیجه موجود باشد، باید آن را بازیابی و برگردانید؛ در غیر این صورت، باید عملیات را انجام دهید، نتیجه را ذخیره کنید و سپس آن را برگردانید.
3️⃣ کلیدهای کش: برای هر نتیجه ذخیرهشده، باید یک کلید منحصر به فرد تعریف کنید. این کلید باید تمام پارامترهای ورودی تابعی که ممکن است نتیجه را تغییر دهند را در نظر بگیرد.
⚙️ مثال عملی
فرض کنید میخواهیم نتایج یک کوئری پایگاه داده سنگین را که لیستی از کاربران را برمیگرداند، memoize کنیم:
🔸 در Laravel، Memoization به صورت معمول از کشها (Caching) استفاده میکند. وقتی یک محاسبه انجام میشود، نتیجه آن به عنوان یک کلید-مقدار در کش (Cache) ذخیره میشود. بار دیگری که همان محاسبه مورد نیاز است، ابتدا کش بررسی میشود. اگر نتیجه در کش وجود داشته باشد، برنامه از کش استفاده میکند به جای اجرای محاسبه مجدد. این کار باعث افزایش سرعت عملکرد برنامه میشود.
📚 نتیجهگیری
استفاده از memoization در لاراول میتواند به طور قابل توجهی به بهبود عملکرد برنامههایی که با عملیاتهای پرهزینه سر و کار دارند کمک کند. با این حال، مهم است که دقت کنید که از آن در جاهای مناسب و به شیوهای اصولی استفاده شود تا از افزودن پیچیدگی بیمورد به برنامه جلوگیری شود.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
یک تکنیک بهینهسازی است که برای افزایش سرعت اجرای برنامهها با ذخیرهسازی نتایج عملیاتهای پرهزینه (مانند فراخوانیهای تابع یا دسترسیهای پایگاه داده) و استفاده مجدد از این نتایج در فراخوانیهای بعدی به جای انجام مجدد عملیات استفاده میشود.
🛠 کاربرد Memoization در لاراول
در لاراول، memoization میتواند به خصوص در بهینهسازی عملکرد کوئریهای پایگاه داده، محاسبات پیچیده یا فراخوانیهای API که زمان و منابع زیادی را مصرف میکنند، مفید باشد. با ذخیرهسازی نتیجه این عملیاتها، لاراول میتواند به سرعت به دادههای قبلاً محاسبهشده دسترسی پیدا کند و از انجام مجدد کوئریها یا محاسبات جلوگیری کند.
🧐 چگونگی استفاده از Memoization
1️⃣ تعریف کش: ابتدا باید یک مکانیسم برای ذخیرهسازی و بازیابی نتایج ایجاد کنید. در لاراول، میتوانید از سیستم کش از پیش ساختهشده استفاده کنید.
2️⃣ کدنویسی تابع با Memoization: هنگام نوشتن تابعی که قرار است از memoization استفاده کند، باید ابتدا بررسی کنید که آیا نتیجه عملیات قبلاً محاسبه و ذخیره شده است یا خیر. اگر نتیجه موجود باشد، باید آن را بازیابی و برگردانید؛ در غیر این صورت، باید عملیات را انجام دهید، نتیجه را ذخیره کنید و سپس آن را برگردانید.
3️⃣ کلیدهای کش: برای هر نتیجه ذخیرهشده، باید یک کلید منحصر به فرد تعریف کنید. این کلید باید تمام پارامترهای ورودی تابعی که ممکن است نتیجه را تغییر دهند را در نظر بگیرد.
⚙️ مثال عملی
فرض کنید میخواهیم نتایج یک کوئری پایگاه داده سنگین را که لیستی از کاربران را برمیگرداند، memoize کنیم:
use Illuminate\Support\Facades\Cache;
function getHeavyUsersQuery() {
$key = 'heavy_users_query_result';
$ttl = 60 * 60;
// زمان زنده بودن کش به ثانیه، مثلاً یک ساعت
// ابتدا بررسی میکنیم که آیا نتیجه در کش موجود است.
if (Cache::has($key)) {
// بازگرداندن نتیجه از کش
return Cache::get($key);
}
// انجام کوئری و ذخیرهسازی نتیجه در کش اگر نتیجه در کش موجود نباشد
$result = User::where('some_condition', true)->get();
Cache::put($key, $result, $ttl);
return $result;
}
🔸 در Laravel، Memoization به صورت معمول از کشها (Caching) استفاده میکند. وقتی یک محاسبه انجام میشود، نتیجه آن به عنوان یک کلید-مقدار در کش (Cache) ذخیره میشود. بار دیگری که همان محاسبه مورد نیاز است، ابتدا کش بررسی میشود. اگر نتیجه در کش وجود داشته باشد، برنامه از کش استفاده میکند به جای اجرای محاسبه مجدد. این کار باعث افزایش سرعت عملکرد برنامه میشود.
📚 نتیجهگیری
استفاده از memoization در لاراول میتواند به طور قابل توجهی به بهبود عملکرد برنامههایی که با عملیاتهای پرهزینه سر و کار دارند کمک کند. با این حال، مهم است که دقت کنید که از آن در جاهای مناسب و به شیوهای اصولی استفاده شود تا از افزودن پیچیدگی بیمورد به برنامه جلوگیری شود.
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍12🔥4
کانال آموزشی لاراول
Photo
✨ دستورات کلیدی و نکات مهم Laravel Queue
در این پست، به بررسی دقیق و جامع دستورات صف (Queue) در Laravel میپردازیم.
1️⃣ ایجاد جدولها
-
- جدولهای لازم برای ذخیرهسازی jobها در دیتابیس را ایجاد میکند. این دستور برای زمانی که از درایور دیتابیس برای صفها استفاده میکنید، ضروری است.
-
- جدولی برای ذخیرهسازی اطلاعات jobهایی که با شکست مواجه شدهاند ایجاد میکند. این به شما کمک میکند تا خطاها را ردیابی و مدیریت کنید.
2️⃣ اجرای و مدیریت Workerها
-
- یک worker صف را اجرا میکند تا jobهای موجود در صف را پردازش کند. این دستور برای شروع فرآیند پردازش صف است.
-
- مشابه
-
- تمام workerهای صف را ریاستارت میکند. مفید است زمانی که کد جدیدی منتشر شده و میخواهید تغییرات را اعمال کنید.
3️⃣ مدیریت Jobهای شکستخورده
-
- یک یا چند job شکستخورده را برای اجرای مجدد به صف باز میگرداند. برای اجرای مجدد jobهایی که به دلیل خطاهای قابل رفع شکست خوردهاند.
-
- یک job شکستخورده خاص را از جدول jobهای شکستخورده حذف میکند. استفاده میشود وقتی دیگر نیازی به امتحان مجدد یک job نیست.
-
- تمام jobهای شکست خورده را از جدول پاک میکند. برای پاکسازی و ریست کردن صفهای شکستخورده استفاده میشود.
-
- لیستی از تمام jobهای شکستخورده را نمایش میدهد. برای تحلیل و بررسی خطاها استفاده میشود.
4️⃣ تاخیر و تلاش مجدد در Jobها
- Dispatching with Delay:
- برای ارسال یک job به صف با تاخیر، میتوانید از متد
- Release for Retry:
- دستور `release($delay)`در داخل یک job اجرا میشود تا آن job را برای اجرای مجدد با تاخیر در صف قرار دهد. بسیار مفید برای زمانهایی که میخواهید یک job را پس از بروز یک خطای موقتی دوباره امتحان کنید.
5️⃣ تعیین زمان انقضا برای تلاش مجدد
- Using
- در داخل کلاس job، متد
- مثال:
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
در این پست، به بررسی دقیق و جامع دستورات صف (Queue) در Laravel میپردازیم.
1️⃣ ایجاد جدولها
-
php artisan queue:table- جدولهای لازم برای ذخیرهسازی jobها در دیتابیس را ایجاد میکند. این دستور برای زمانی که از درایور دیتابیس برای صفها استفاده میکنید، ضروری است.
-
php artisan queue:failed-table- جدولی برای ذخیرهسازی اطلاعات jobهایی که با شکست مواجه شدهاند ایجاد میکند. این به شما کمک میکند تا خطاها را ردیابی و مدیریت کنید.
2️⃣ اجرای و مدیریت Workerها
-
php artisan queue:work- یک worker صف را اجرا میکند تا jobهای موجود در صف را پردازش کند. این دستور برای شروع فرآیند پردازش صف است.
-
php artisan queue:listen- مشابه
queue:work است، اما برای هر job یک پروسه جدید ایجاد میکند. مناسب برای محیط توسعه به دلیل آسانی در ردیابی خطاها.-
php artisan queue:restart- تمام workerهای صف را ریاستارت میکند. مفید است زمانی که کد جدیدی منتشر شده و میخواهید تغییرات را اعمال کنید.
3️⃣ مدیریت Jobهای شکستخورده
-
php artisan queue:retry {id}- یک یا چند job شکستخورده را برای اجرای مجدد به صف باز میگرداند. برای اجرای مجدد jobهایی که به دلیل خطاهای قابل رفع شکست خوردهاند.
-
php artisan queue:forget {id}- یک job شکستخورده خاص را از جدول jobهای شکستخورده حذف میکند. استفاده میشود وقتی دیگر نیازی به امتحان مجدد یک job نیست.
-
php artisan queue:flush- تمام jobهای شکست خورده را از جدول پاک میکند. برای پاکسازی و ریست کردن صفهای شکستخورده استفاده میشود.
-
php artisan queue:failed- لیستی از تمام jobهای شکستخورده را نمایش میدهد. برای تحلیل و بررسی خطاها استفاده میشود.
4️⃣ تاخیر و تلاش مجدد در Jobها
- Dispatching with Delay:
- برای ارسال یک job به صف با تاخیر، میتوانید از متد
dispatch با اضافه کردن ->delay($time) استفاده کنید، مثلاً SomeJob::dispatch()->delay(now()->addMinutes(10));- Release for Retry:
- دستور `release($delay)`در داخل یک job اجرا میشود تا آن job را برای اجرای مجدد با تاخیر در صف قرار دهد. بسیار مفید برای زمانهایی که میخواهید یک job را پس از بروز یک خطای موقتی دوباره امتحان کنید.
5️⃣ تعیین زمان انقضا برای تلاش مجدد
- Using
retryUntil:- در داخل کلاس job، متد
retryUntil را تعریف کنید تا زمان انقضا برای تلاشهای مجدد را مشخص کنید. این متد باید تاریخ و زمانی را که میخواهید job دیگر امتحان مجدد نشود را بازگرداند.- مثال:
public function retryUntil()
{
// تلاش مجدد برای یک ساعت پس از اولین اجرا
return now()->addHours(1);
}
✅ کانال تخصصی لاراول
📌 @PapiDon_state
☕️ اتاق برنامه نویسی </>
📌 @PapiDon_coding
👍9❤5🔥3