مقاله ای🚀 از Process تا Promise: راهنمای کامل Blocking و Concurrency
آیا میدانستید؟
🔹 چطور وب سوکت ها دائما زنده هستند ؟ آیا این چرخه باعث سنگینی cpu میشه ؟!
🔹 و I/O همیشه Block میکند — این فیزیک است، نه نقص زبان!
🔹 و حلقههای بینهایت خوب میخوابند (0% CPU) و بدها میسوزانند (100% CPU)
🔹 و Thread سنگین است (8MB)، Coroutine سبک (2KB) — میلیونها ممکن!
🔹 و epoll/kqueue در کرنل، Promise و await در زبان — همه لایهها به هم وصلاند
🔹 و Swoole و Octane چطور PHP را Non-Blocking میکنند؟
🔹 و چرا WebSocket در JS پنهان است اما در PHP باید دستی نوشت؟
📖 مقاله کامل را از لینک زیر بخوانید:
🔗 https://abolraj.github.io/article-websockets/
#Concurrency #Blocking #PHP #Go #JS #Swoole #WebSocket
آیا میدانستید؟
🔹 چطور وب سوکت ها دائما زنده هستند ؟ آیا این چرخه باعث سنگینی cpu میشه ؟!
🔹 و I/O همیشه Block میکند — این فیزیک است، نه نقص زبان!
🔹 و حلقههای بینهایت خوب میخوابند (0% CPU) و بدها میسوزانند (100% CPU)
🔹 و Thread سنگین است (8MB)، Coroutine سبک (2KB) — میلیونها ممکن!
🔹 و epoll/kqueue در کرنل، Promise و await در زبان — همه لایهها به هم وصلاند
🔹 و Swoole و Octane چطور PHP را Non-Blocking میکنند؟
🔹 و چرا WebSocket در JS پنهان است اما در PHP باید دستی نوشت؟
📖 مقاله کامل را از لینک زیر بخوانید:
🔗 https://abolraj.github.io/article-websockets/
#Concurrency #Blocking #PHP #Go #JS #Swoole #WebSocket
❤3
Forwarded from hossein
سلام بچه ها من این ری ویو کارت های گوگل رو تولید کردم اگه میدونید به کارتون میاد یا بدرد کسب و کارتون میخوره فوروارد کنید یا به من پیام بدید توی تلگرام که من بیام براتون توضیح بدم که چکار میکنه
@biaoversharekonimm
پ.ن:اگر بکارتونم نمیاد فوروارد کنید اگه کسی لازم داشت بخره 🫶
@biaoversharekonimm
پ.ن:اگر بکارتونم نمیاد فوروارد کنید اگه کسی لازم داشت بخره 🫶
❤1
Forwarded from TheAliBigdeli Channel
تاکرو برای علاقه مندان به یادگیری زبان انگلیسی
برگزاری مشاوره و جلسات در جهت ارتقا سطح کیفی شما در زمینه یادگیری زبان انگلیسی، به همراه خدماتی که در آینده رو نمایی میشه که می تونین از طریقش شروع به یادگیری کنین.
زبان انگلیسی یه آپشن نیست!
https://talkro.ir/
@thealibigdeli_channel
#useful
#site
برگزاری مشاوره و جلسات در جهت ارتقا سطح کیفی شما در زمینه یادگیری زبان انگلیسی، به همراه خدماتی که در آینده رو نمایی میشه که می تونین از طریقش شروع به یادگیری کنین.
زبان انگلیسی یه آپشن نیست!
https://talkro.ir/
@thealibigdeli_channel
#useful
#site
سه تا درس سخت که بعد از یه شب دیباگ کردن یاد گرفتم واسه php کارا و مخصوصاً لاراولیا🥲
دیشب یه شب کامل درگیر بودم، آخرش به این سه تا نکته رسیدم. گفتم بنویسمشون که شما این مسیر رو دوباره اشتباه نرید. 🙏
۱️⃣ اوبونتو ۲۶ خودش PHP 8.5 رو نصب میکنه — و این یه تغییر بزرگه 🚨
من اولش فکر کردم مثل همیشه با sudo apt install php کارم راه میفته. راه افتاد، ولی PHP 8.5 نصب شد. بعد خواستم مثلا ۸.۳ نصب کنم، رفتم سراغ همون PPA قدیمی ondrej/php که همهی عمر با اون کار میکردیم. باورتون نمیشه، روی اوبونتو ۲۶.۰۴ کاملاً مردهست. خطای ۴۰۴ میداد روی فایل Release و apt فقط سر من داد میزد.
بعد از کلی گشتن فهمیدم اون PPA توی مخزن Sury ادغام شده. یعنی باید packages.sury.org رو به روش جدید deb822 و با keyring خودش اضافه کنم. تازه اونجا هم یه نکته بود: اگه نسخهی خاصی مثل ۸.۳ میخوای، باید از Sury بگیری، نه از خود اوبونتو. اوبونتو فقط همون یه نسخهی پیشفرض رو بهت میده. واقعاً کسی این تغییر رو به آدم هشدار نمیده.
کاری که خودم کردم و جواب داد 👇
گام ۱ — نصب keyring سوری:
گام ۲ — ساختن فایل مخزن Sury توی /etc/apt/sources.list.d/php.sources:
گام ۳ — آپدیت و نصب نسخهای که میخوام:
گام ۴ — چک کردن:
۲️⃣ برای Laravel Octane فقط باید octane:install بزنی 🐘
اینجا یه اشتباه دیگه کردم. رفتم مستقیم مستندات FrankenPHP رو خوندم و گفتم بذار خودم نصبش کنم روی سیستم. نکنید این کار رو.
فقط این رو بزنید:
و وقتی پرسید، FrankenPHP رو انتخاب کنید.
Laravel خودش باینری FrankenPHP رو دانلود میکنه و میذاره دقیقاً توی ریشهی پروژهتون. همون باینری اپلیکیشن رو سرو میکنه. بدون نصب سیستمی، بدون نسخههای قاطیپاتی، بدون بههمریختگی PATH، بدون اینکه با آپدیت خراب بشه.
یه دستور، یه باینری، تمام.
اگه من قبلاً به اشتباه FrankenPHP رو رو کل سیستم نصب کردم، شما این کار رو نکنید. اگه کردید، حذفش کنید و دوباره octane:install رو بزنید تا Laravel خودش صاحب باینری بشه.
۳️⃣ Octane با FrankenPHP هنوز روی PHP 8.5 کار نمیکنه ❌
این یکی بیشترین وقت من رو گرفت. همه چیز نصب بود، همه چیز سالم به نظر میرسید، ولی Octane بیخیال از اجرا شدن امتناع میکرد. آخرش فهمیدم مشکل چیه: FrankenPHP هنوز به PHP 8.5 نرسیده.
الان نسخههای امن PHP 8.4 (پیشنهاد خودم) و PHP 8.3 (که خودم دارم ازش استفاده میکنم و عالی کار میکنه) هستن.
پس اگه شما هم روی اوبونتو ۲۶ هستید و PHP 8.5 پیشفرض رو دارید، قبل از اینکه به Octane دست بزنید، CLI رو ببرید روی ۸.۴ یا ۸.۳.
اینطوری php CLI پیشفرض رو عوض کردم 👇
راه اول — برو روی ۸.۴:
راه دوم — برو روی ۸.۳ (خودم این رو انتخاب کردم):
بعد چک کنید Octane از باینری درست استفاده میکنه:
اگه بازم امتناع کرد، ببینید FPM و CLI هر دو به کجا اشاره میکنن، چون عدم تطابق بینشون باعث خرابیهای خاموش و بیسروصدا میشه که آدم رو دیوونه میکنه.
جمعبندی 🧠
اوبونتو ۲۶ کلاً روش کار با نسخههای PHP رو عوض کرده. Sury مسیر جدید، نه PPA قدیمی ondrej.
بذارید octane:install خودش FrankenPHP رو مدیریت کنه. هیچوقت خودتون جداگانه نصبش نکنید.
و هیچوقت FrankenPHP رو با PHP 8.5 جفت نکنید تا وقتی رسماً پشتیبانی بشه. برید سراغ ۸.۴، یا اگه چیز امتحانپسداده میخواید، همون ۸.۳.
امیدوارم واسه کسی تکرار نشه یا اگه شد درس عبرت بشه 🙏
#Ubuntu26 #PHP85 #PHP84 #PHP83 #LaravelOctane #FrankenPHP #SuryRepo #DevOps #Laravel #PHP #WebDev #BreakingChanges #SysAdmin
دیشب یه شب کامل درگیر بودم، آخرش به این سه تا نکته رسیدم. گفتم بنویسمشون که شما این مسیر رو دوباره اشتباه نرید. 🙏
۱️⃣ اوبونتو ۲۶ خودش PHP 8.5 رو نصب میکنه — و این یه تغییر بزرگه 🚨
من اولش فکر کردم مثل همیشه با sudo apt install php کارم راه میفته. راه افتاد، ولی PHP 8.5 نصب شد. بعد خواستم مثلا ۸.۳ نصب کنم، رفتم سراغ همون PPA قدیمی ondrej/php که همهی عمر با اون کار میکردیم. باورتون نمیشه، روی اوبونتو ۲۶.۰۴ کاملاً مردهست. خطای ۴۰۴ میداد روی فایل Release و apt فقط سر من داد میزد.
بعد از کلی گشتن فهمیدم اون PPA توی مخزن Sury ادغام شده. یعنی باید packages.sury.org رو به روش جدید deb822 و با keyring خودش اضافه کنم. تازه اونجا هم یه نکته بود: اگه نسخهی خاصی مثل ۸.۳ میخوای، باید از Sury بگیری، نه از خود اوبونتو. اوبونتو فقط همون یه نسخهی پیشفرض رو بهت میده. واقعاً کسی این تغییر رو به آدم هشدار نمیده.
کاری که خودم کردم و جواب داد 👇
گام ۱ — نصب keyring سوری:
curl -fsSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
sudo dpkg -i /tmp/debsuryorg-archive-keyring.deb
گام ۲ — ساختن فایل مخزن Sury توی /etc/apt/sources.list.d/php.sources:
Types: deb
URIs: https://packages.sury.org/php/
Suites: resolute
Components: main
Signed-By: /usr/share/keyrings/debsuryorg-archive-keyring.gpg
گام ۳ — آپدیت و نصب نسخهای که میخوام:
sudo apt update
sudo apt install php8.3 php8.3-cli php8.3-fpm php8.3-mysql php8.3-mbstring php8.3-xml php8.3-curl php8.3-zip
گام ۴ — چک کردن:
php -v
۲️⃣ برای Laravel Octane فقط باید octane:install بزنی 🐘
اینجا یه اشتباه دیگه کردم. رفتم مستقیم مستندات FrankenPHP رو خوندم و گفتم بذار خودم نصبش کنم روی سیستم. نکنید این کار رو.
فقط این رو بزنید:
php artisan octane:install
و وقتی پرسید، FrankenPHP رو انتخاب کنید.
Laravel خودش باینری FrankenPHP رو دانلود میکنه و میذاره دقیقاً توی ریشهی پروژهتون. همون باینری اپلیکیشن رو سرو میکنه. بدون نصب سیستمی، بدون نسخههای قاطیپاتی، بدون بههمریختگی PATH، بدون اینکه با آپدیت خراب بشه.
یه دستور، یه باینری، تمام.
اگه من قبلاً به اشتباه FrankenPHP رو رو کل سیستم نصب کردم، شما این کار رو نکنید. اگه کردید، حذفش کنید و دوباره octane:install رو بزنید تا Laravel خودش صاحب باینری بشه.
۳️⃣ Octane با FrankenPHP هنوز روی PHP 8.5 کار نمیکنه ❌
این یکی بیشترین وقت من رو گرفت. همه چیز نصب بود، همه چیز سالم به نظر میرسید، ولی Octane بیخیال از اجرا شدن امتناع میکرد. آخرش فهمیدم مشکل چیه: FrankenPHP هنوز به PHP 8.5 نرسیده.
الان نسخههای امن PHP 8.4 (پیشنهاد خودم) و PHP 8.3 (که خودم دارم ازش استفاده میکنم و عالی کار میکنه) هستن.
پس اگه شما هم روی اوبونتو ۲۶ هستید و PHP 8.5 پیشفرض رو دارید، قبل از اینکه به Octane دست بزنید، CLI رو ببرید روی ۸.۴ یا ۸.۳.
اینطوری php CLI پیشفرض رو عوض کردم 👇
راه اول — برو روی ۸.۴:
sudo update-alternatives --set php /usr/bin/php8.4
php -v
راه دوم — برو روی ۸.۳ (خودم این رو انتخاب کردم):
sudo update-alternatives --set php /usr/bin/php8.3
php -v
بعد چک کنید Octane از باینری درست استفاده میکنه:
php artisan octane:start --server=frankenphp
اگه بازم امتناع کرد، ببینید FPM و CLI هر دو به کجا اشاره میکنن، چون عدم تطابق بینشون باعث خرابیهای خاموش و بیسروصدا میشه که آدم رو دیوونه میکنه.
جمعبندی 🧠
اوبونتو ۲۶ کلاً روش کار با نسخههای PHP رو عوض کرده. Sury مسیر جدید، نه PPA قدیمی ondrej.
بذارید octane:install خودش FrankenPHP رو مدیریت کنه. هیچوقت خودتون جداگانه نصبش نکنید.
و هیچوقت FrankenPHP رو با PHP 8.5 جفت نکنید تا وقتی رسماً پشتیبانی بشه. برید سراغ ۸.۴، یا اگه چیز امتحانپسداده میخواید، همون ۸.۳.
امیدوارم واسه کسی تکرار نشه یا اگه شد درس عبرت بشه 🙏
#Ubuntu26 #PHP85 #PHP84 #PHP83 #LaravelOctane #FrankenPHP #SuryRepo #DevOps #Laravel #PHP #WebDev #BreakingChanges #SysAdmin
❤1
Crazy Dev ❤️🔥💻 pinned «سه تا درس سخت که بعد از یه شب دیباگ کردن یاد گرفتم واسه php کارا و مخصوصاً لاراولیا🥲 دیشب یه شب کامل درگیر بودم، آخرش به این سه تا نکته رسیدم. گفتم بنویسمشون که شما این مسیر رو دوباره اشتباه نرید. 🙏 ۱️⃣ اوبونتو ۲۶ خودش PHP 8.5 رو نصب میکنه — و این یه تغییر…»
This media is not supported in your browser
VIEW IN TELEGRAM
رباتی که میتواند تا ۴۶ کیلومتر بر ساعت بدود ...
🔥1
Forwarded from S
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from S
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from S
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from S
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from S
This media is not supported in your browser
VIEW IN TELEGRAM