{"id":25270,"date":"2026-06-12T20:04:24","date_gmt":"2026-06-12T20:04:24","guid":{"rendered":"https:\/\/umang.pk\/2026\/06\/12\/%db%81%d8%a7%d8%a6%db%8c-%d9%b9%d8%b1%db%8c%d9%81%da%a9-%d9%be%d8%b1%d9%88%da%88%da%a9%d8%b4%d9%86-%d8%b3%d8%b3%d9%b9%d9%85%d8%b2-%da%a9%db%92-%d9%84%db%8c%db%92-%d9%84%d8%a7%d8%b1%db%8c%d9%88%d9%84\/"},"modified":"2026-06-12T20:04:24","modified_gmt":"2026-06-12T20:04:24","slug":"%db%81%d8%a7%d8%a6%db%8c-%d9%b9%d8%b1%db%8c%d9%81%da%a9-%d9%be%d8%b1%d9%88%da%88%da%a9%d8%b4%d9%86-%d8%b3%d8%b3%d9%b9%d9%85%d8%b2-%da%a9%db%92-%d9%84%db%8c%db%92-%d9%84%d8%a7%d8%b1%db%8c%d9%88%d9%84","status":"publish","type":"post","link":"https:\/\/umang.pk\/en_us\/2026\/06\/12\/%db%81%d8%a7%d8%a6%db%8c-%d9%b9%d8%b1%db%8c%d9%81%da%a9-%d9%be%d8%b1%d9%88%da%88%da%a9%d8%b4%d9%86-%d8%b3%d8%b3%d9%b9%d9%85%d8%b2-%da%a9%db%92-%d9%84%db%8c%db%92-%d9%84%d8%a7%d8%b1%db%8c%d9%88%d9%84\/","title":{"rendered":"\u06c1\u0627\u0626\u06cc \u0679\u0631\u06cc\u0641\u06a9 \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u0633\u0633\u0679\u0645\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0644\u0627\u0631\u06cc\u0648\u0644 \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u06a9\u06cc \u067e\u06cc\u0645\u0627\u0626\u0634 \u06a9\u06cc\u0633\u06d2 \u06a9\u06cc \u062c\u0627\u0626\u06d2\u06d4"},"content":{"rendered":"\n<div id=\"\">\n<p>\u067e\u06c1\u0644\u0627 \u0633\u06a9\u06cc\u0644\u0646\u06af \u06a9\u0627 \u0645\u0633\u0626\u0644\u06c1 \u0634\u0627\u0630 \u0648 \u0646\u0627\u062f\u0631 \u06c1\u06cc \u0627\u0686\u0627\u0646\u06a9 \u067e\u06cc\u062f\u0627 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u062a\u06be\u0648\u0691\u06cc \u062f\u06cc\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u0628 \u06a9\u0686\u06be \u0679\u06be\u06cc\u06a9 \u06c1\u06d2\u06d4 \u0635\u0641\u062d\u0627\u062a \u062a\u06cc\u0632\u06cc \u0633\u06d2 \u0644\u0648\u0688 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0628\u0645\u0634\u06a9\u0644 \u06c1\u06cc \u067e\u0633\u06cc\u0646\u06c1 \u0628\u06c1\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0679\u06cc\u0645\u06cc\u06ba \u0628\u0646\u06cc\u0627\u062f\u06cc \u0688\u06be\u0627\u0646\u0686\u06d2 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0632\u06cc\u0627\u062f\u06c1 \u0633\u0648\u0686\u06d2 \u0628\u063a\u06cc\u0631 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u067e\u06be\u0631 \u0679\u0631\u06cc\u0641\u06a9 \u0628\u0691\u06be \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4 \u0622\u067e \u06a9\u06cc \u0645\u06c1\u0645 \u0646\u06d2 \u0628\u06c1\u062a \u0632\u06cc\u0627\u062f\u06c1 \u06a9\u0627\u0631\u06a9\u0631\u062f\u06af\u06cc \u06a9\u0627 \u0645\u0638\u0627\u06c1\u0631\u06c1 \u06a9\u06cc\u0627 \u06c1\u06d2\u06d4 \u0645\u0627\u0631\u06a9\u06cc\u0679 \u067e\u0644\u06cc\u0633 \u0645\u0642\u0628\u0648\u0644 \u0641\u0631\u0648\u062e\u062a \u06a9\u0646\u0646\u062f\u06af\u0627\u0646 \u06a9\u0648 \u0622\u0646 \u0628\u0648\u0631\u0688 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u06c1\u0645\u0627\u0631\u0627 SaaS \u067e\u0631\u0648\u0688\u06a9\u0679 \u062f\u0648 \u06a9\u0627\u0631\u067e\u0648\u0631\u06cc\u0679 \u0627\u06a9\u0627\u0624\u0646\u0679\u0633 \u067e\u0631 \u062f\u0633\u062a\u062e\u0637 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0686\u0627\u0646\u06a9\u060c <code>\/dashboard<\/code> \u0627\u0633 \u0645\u06cc\u06ba 300 \u0645\u0644\u06cc \u0633\u06cc\u06a9\u0646\u0688 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 2 \u0633\u06cc\u06a9\u0646\u0688 \u0644\u06af\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0642\u0637\u0627\u0631 \u0648\u0627\u0644\u06cc \u0645\u0644\u0627\u0632\u0645\u062a\u06cc\u06ba \u062c\u0648 \u0633\u06cc\u06a9\u0646\u0688\u0648\u06ba \u0645\u06cc\u06ba \u0635\u0627\u0641 \u06c1\u0648 \u06af\u0626\u06cc \u062a\u06be\u06cc\u06ba \u0645\u0646\u0679\u0648\u06ba \u062a\u06a9 \u0627\u0646\u062a\u0638\u0627\u0631 \u0645\u06cc\u06ba \u0631\u06c1\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u06c1\u0645 \u06c1\u0631 \u0633\u06c1 \u067e\u06c1\u0631 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 CPU \u0627\u0633\u067e\u0627\u0626\u06a9\u0633 \u06a9\u0627 \u062a\u062c\u0631\u0628\u06c1 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0644\u06c1\u0630\u0627 \u0627\u06cc\u06a9 \u0627\u0648\u0631 \u0627\u06cc\u067e \u0633\u0631\u0648\u0631 \u06a9\u0648 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u062c\u0648\u0627\u0628\u06cc \u0648\u0642\u062a \u0645\u06cc\u06ba \u0645\u0634\u06a9\u0644 \u0633\u06d2 \u06a9\u0645\u06cc \u0622\u0626\u06d2 \u06af\u06cc\u06d4 \u0627\u0635\u0644 \u0648\u062c\u06c1 \u0628\u0691\u06cc \u0645\u06cc\u0632\u0648\u06ba \u067e\u0631 \u0645\u0633\u0644\u0633\u0644 \u0633\u0633\u062a \u0633\u0648\u0627\u0644\u0627\u062a \u062a\u06be\u06d2\u06d4<\/p>\n<p>\u0627\u06af\u0631 \u0622\u067e \u0646\u06d2 \u06a9\u0628\u06be\u06cc Laravel \u06a9\u0648 \u067e\u06cc\u062f\u0627\u0648\u0627\u0631\u06cc \u0645\u0627\u062d\u0648\u0644 \u0645\u06cc\u06ba \u0686\u0644\u0627\u06cc\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0622\u067e \u0646\u06d2 \u0634\u0627\u06cc\u062f \u0627\u0633 \u0637\u0631\u062d \u06a9\u06d2 \u0648\u0631\u0698\u0646 \u06a9\u0627 \u062a\u062c\u0631\u0628\u06c1 \u06a9\u06cc\u0627 \u06c1\u0648\u06af\u0627\u06d4 \u0627\u0686\u06be\u06cc \u062e\u0628\u0631 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 Laravel \u06a9\u0648 \u0628\u0691\u06be\u0627\u0646\u06d2 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u06a9\u0648 \u062a\u0631\u06a9 \u06a9\u0631\u0646\u0627 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u06cc\u06c1 \u0633\u06cc\u06a9\u06be\u0646\u0627 \u06a9\u06c1 \u062f\u0628\u0627\u0624 \u06a9\u06c1\u0627\u06ba \u0644\u0627\u06af\u0648 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0644\u0648\u0688 \u06c1\u0648\u0646\u06d2 \u067e\u0631 \u0622\u067e \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0648 \u062a\u0648\u0642\u0639 \u06a9\u06d2 \u0645\u0637\u0627\u0628\u0642 \u0627\u0646\u062c\u0627\u0645 \u062f\u06cc\u0646\u0627\u06d4<\/p>\n<p>\u0627\u0633 \u06af\u0627\u0626\u06cc\u0688 \u0645\u06cc\u06ba\u060c \u0622\u067e \u0633\u06cc\u06a9\u06be\u06cc\u06ba \u06af\u06d2 \u06a9\u06c1 \u06a9\u0633 \u0637\u0631\u062d \u0639\u0627\u0645 \u0631\u06a9\u0627\u0648\u0679\u0648\u06ba \u06a9\u0648 \u062a\u0644\u0627\u0634 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u060c \u0627\u067e\u0646\u06d2 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u0648 \u0679\u06cc\u0648\u0646 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u060c Redis \u06a9\u0648 \u0645\u0624\u062b\u0631 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u060c \u0633\u0633\u062a \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0642\u0637\u0627\u0631\u0648\u06ba \u0645\u06cc\u06ba \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u0646\u0627\u060c APIs \u06a9\u0648 \u0628\u06c1\u062a\u0631 \u0628\u0646\u0627\u0646\u0627\u060c \u0627\u0648\u0631 \u067e\u06cc\u062f\u0627\u0648\u0627\u0631 \u0645\u06cc\u06ba \u0627\u067e\u0646\u06d2 Laravel \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u06cc \u0646\u06af\u0631\u0627\u0646\u06cc \u06a9\u0631\u0646\u0627\u06d4<\/p>\n<p>\u0627\u0633 \u0645\u06cc\u06ba \u0633\u06d2 \u06a9\u0633\u06cc \u06a9\u0648 \u0628\u06be\u06cc \u0628\u06c1\u0627\u062f\u0631\u06cc \u0633\u06d2 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0644\u06a9\u06be\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0633\u0628 \u0633\u06d2 \u0628\u0691\u06cc \u062c\u06cc\u062a \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0646\u0627\u06a9\u0627\u0631\u06c1 \u0627\u0633\u062a\u0641\u0633\u0627\u0631\u0627\u062a \u06a9\u0648 \u062e\u062a\u0645 \u06a9\u0631\u0646\u06d2\u060c \u0633\u0633\u062a \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0642\u0637\u0627\u0631\u0648\u06ba \u0645\u06cc\u06ba \u062f\u06be\u06a9\u06cc\u0644\u0646\u06d2\u060c \u0635\u062d\u06cc\u062d \u0627\u0634\u0627\u0631\u06cc\u06c1 \u062c\u0627\u062a \u06a9\u0648 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u06d2\u060c \u0627\u062d\u062a\u06cc\u0627\u0637 \u0633\u06d2 \u0645\u0646\u062a\u062e\u0628 \u06a9\u0631\u062f\u06c1 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u06a9\u06cc\u0634 \u06a9\u0631\u0646\u06d2\u060c \u0627\u0648\u0631 \u06cc\u06c1 \u067e\u06cc\u0645\u0627\u0626\u0634 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0627\u0635\u0644 \u06a9\u0627\u0645 \u0633\u06d2 \u062d\u0627\u0635\u0644 \u06c1\u0648\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u0622\u06cc\u0627 \u06c1\u0631 \u062a\u0628\u062f\u06cc\u0644\u06cc \u0646\u06d2 \u0648\u0627\u0642\u0639\u06cc \u0645\u062f\u062f \u06a9\u06cc \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-prerequisites\">\u0634\u0631\u0637\u06cc\u06ba<\/h2>\n<p>\u0627\u06af\u0631 \u0622\u067e \u067e\u06c1\u0644\u06d2 \u06c1\u06cc \u0633\u06d2 \u0648\u0627\u0642\u0641 \u06c1\u06cc\u06ba \u062a\u0648 \u0622\u067e \u0627\u0633 \u06af\u0627\u0626\u06cc\u0688 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0641\u0627\u0626\u062f\u06c1 \u0627\u0679\u06be\u0627\u0626\u06cc\u06ba \u06af\u06d2:<\/p>\n<ul>\n<li>\n<p>Laravel \u0627\u0648\u0631 PHP \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u0628\u0646\u0627\u0646\u0627<\/p>\n<\/li>\n<li>\n<p>\u0641\u0635\u06cc\u062d \u0633\u0648\u0627\u0644\u0627\u062a \u0644\u06a9\u06be\u0646\u0627 \u0627\u0648\u0631 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u0648 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u0646\u0627<\/p>\n<\/li>\n<li>\n<p>\u0642\u0637\u0627\u0631\u0648\u06ba\u060c \u06a9\u0627\u0645\u0648\u06ba\u060c \u0627\u0648\u0631 \u0637\u06d2 \u0634\u062f\u06c1 \u06a9\u0645\u0627\u0646\u0688\u0632 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0688\u06cc\u0641\u0627\u0644\u0679 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u0627 \u0645\u0646\u0635\u0648\u0628\u06c1 \u067e\u0691\u06be\u06cc\u06ba<\/p>\n<\/li>\n<li>\n<p>Laravel \u06a9\u0648 \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u0633\u0631\u0648\u0631 \u06cc\u0627 \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 \u067e\u0631 \u062a\u0639\u06cc\u0646\u0627\u062a \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u062c\u06cc\u0633\u06d2 \u0633\u06cc\u0679 \u0627\u067e \u0645\u06cc\u06ba Redis \u0627\u0648\u0631 MySQL \u06cc\u0627 PostgreSQL \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u0627\u0645 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<\/ul>\n<h2 id=\"heading-table-of-contents\">\u0627\u0646\u0688\u06cc\u06a9\u0633<\/h2>\n<h2 id=\"heading-what-happens-when-laravel-apps-start-growing\">\u062c\u0628 \u0622\u067e \u06a9\u06cc Laravel \u0627\u06cc\u067e \u0628\u0691\u06be\u0646\u06d2 \u0644\u06af\u062a\u06cc \u06c1\u06d2 \u062a\u0648 \u06a9\u06cc\u0627 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u061f<\/h2>\n<p>\u0679\u0631\u06cc\u0641\u06a9 \u0686\u06be\u0648\u0679\u06cc \u0646\u0627\u06a9\u0627\u0631\u06c1\u06cc\u0648\u06ba \u06a9\u0648 \u0645\u0633\u062a\u0642\u0644 \u0627\u062e\u0631\u0627\u062c\u0627\u062a \u0645\u06cc\u06ba \u0628\u062f\u0644 \u06a9\u0631 \u0646\u0638\u0627\u0645 \u06a9\u06d2 \u0631\u0648\u06cc\u06d2 \u06a9\u0648 \u0628\u062f\u0644 \u062f\u06cc\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0633\u0648\u0627\u0644 \u062c\u0633 \u0645\u06cc\u06ba 80 \u0645\u0644\u06cc \u0633\u06cc\u06a9\u0646\u0688 \u06a9\u0627 \u0648\u0642\u062a \u0644\u06af\u062a\u0627 \u06c1\u06d2 \u0648\u06c1 \u0628\u06d2 \u0636\u0631\u0631 \u06c1\u06d2 \u062c\u0628 \u0627\u06cc\u06a9 \u06af\u06be\u0646\u0679\u06d2 \u0645\u06cc\u06ba \u0633\u06cc\u0646\u06a9\u0691\u0648\u06ba \u0628\u0627\u0631 \u0639\u0645\u0644 \u0645\u06cc\u06ba \u0644\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4 \u0627\u06cc\u06a9 \u0627\u06cc\u0633\u06d2 \u0635\u0641\u062d\u06d2 \u067e\u0631 \u062c\u0633 \u06a9\u0648 \u0641\u06cc \u0645\u0646\u0679 \u06c1\u0632\u0627\u0631\u0648\u06ba \u06c1\u0679\u0633 \u0645\u0644\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062c\u0628 \u0641\u06cc \u0635\u0641\u062d\u06c1 30 \u0645\u0631\u062a\u0628\u06c1 \u0648\u06cc\u0648 \u067e\u0631 \u0639\u0645\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u062a\u0648 \u0648\u06c1\u06cc \u0633\u0648\u0627\u0644 \u0635\u0644\u0627\u062d\u06cc\u062a \u06a9\u0627 \u0645\u0633\u0626\u0644\u06c1 \u0628\u0646 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u062f\u0628\u0627\u0624 \u0645\u062a\u0648\u0642\u0639 \u062c\u06af\u06c1\u0648\u06ba \u067e\u0631 \u0638\u0627\u06c1\u0631 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u0645\u0632\u06cc\u062f \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u067e\u06cc \u0627\u06cc\u0686 \u067e\u06cc \u06a9\u0627\u0631\u06a9\u0646\u060c \u0632\u06cc\u0627\u062f\u06c1 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u0646\u06a9\u0634\u0646\u060c \u0632\u06cc\u0627\u062f\u06c1 \u0642\u0637\u0627\u0631 \u0648\u0627\u0644\u06cc\u0648\u0645\u060c \u0627\u0648\u0631 \u0645\u0632\u06cc\u062f Redis \u06a9\u0627\u0645\u06d4<\/p>\n<p>\u062e\u0648\u0627\u06c1 MySQL \u06c1\u0648 \u06cc\u0627 PostgreSQL\u060c \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u062d\u0644 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u0627 \u067e\u06c1\u0644\u0627 \u0645\u0633\u0626\u0644\u06c1 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u062c\u0628 \u0645\u0644\u0627\u0632\u0645\u062a\u06cc\u06ba \u0627\u0633 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u06cc\u0632\u06cc \u0633\u06d2 \u062a\u062e\u0644\u06cc\u0642 \u06a9\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06cc\u06ba \u06a9\u06c1 \u06a9\u0627\u0631\u06a9\u0646\u0627\u0646 \u0627\u0646\u06c1\u06cc\u06ba \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0642\u0637\u0627\u0631 \u06a9\u0627 \u0628\u06cc\u06a9 \u0627\u067e \u0644\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u06cc\u0634\u0646\u06af \u0635\u0631\u0641 \u0627\u0633 \u0635\u0648\u0631\u062a \u0645\u06cc\u06ba \u0645\u062f\u062f\u06af\u0627\u0631 \u062b\u0627\u0628\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2 \u062c\u0628 \u06c1\u0679 \u0631\u06cc\u0679 \u0632\u06cc\u0627\u062f\u06c1 \u0631\u06c1\u06cc\u06ba \u0627\u0648\u0631 \u06a9\u0645\u06cc \u06a9\u0648 \u06a9\u0646\u0679\u0631\u0648\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4 \u0627\u0648\u0631 \u06c1\u0631 \u0686\u06cc\u0632 \u06a9\u0648 \u0627\u0641\u0642\u06cc \u0637\u0648\u0631 \u067e\u0631 \u067e\u06cc\u0645\u0627\u0646\u06c1 \u06a9\u0631\u0646\u0627 \u0645\u06cc\u0644\u0627 \u06a9\u0648\u0688 \u06a9\u0648 \u0645\u06c1\u0646\u06af\u06d2 \u06a9\u0644\u0627\u0624\u0688 \u0627\u062e\u0631\u0627\u062c\u0627\u062a \u0645\u06cc\u06ba \u0628\u062f\u0644 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u0644\u06cc\u06d2 \u0627\u0633\u06a9\u06cc\u0644\u0646\u06af \u06a9\u0648 \u067e\u06cc\u0645\u0627\u0626\u0634 \u0633\u06d2 \u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u060c \u0627\u0646\u062f\u0627\u0632\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u0633\u06d2 \u0646\u06c1\u06cc\u06ba\u06d4 \u0627\u0633 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06a9\u06c1 \u0645\u06cc\u06ba \u06a9\u0686\u06be \u0628\u06be\u06cc \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0648\u06ba\u060c \u0645\u06cc\u06ba \u062c\u0627\u0646\u0646\u0627 \u0686\u0627\u06c1\u062a\u0627 \u06c1\u0648\u06ba \u06a9\u06c1 \u0627\u0635\u0644 \u0645\u06cc\u06ba \u0633\u06cc\u0631 \u0634\u062f\u06c1 \u06a9\u06cc\u0627 \u06c1\u06d2: CPU\u060c \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 I\/O\u060c \u0644\u0627\u06a9 \u06a9\u0646\u0679\u06cc\u0646\u0634\u0646\u060c Redis \u0644\u06cc\u0679\u0646\u0633\u06cc\u060c \u0642\u0637\u0627\u0631 \u06a9\u06cc \u06af\u06c1\u0631\u0627\u0626\u06cc\u060c \u0628\u06cc\u0631\u0648\u0646\u06cc API\u060c \u06cc\u0627 \u0628\u0691\u06d2 \u067e\u06d2 \u0644\u0648\u0688\u0632 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u0628\u0691\u06be\u062a\u06cc \u06c1\u0648\u0626\u06cc Laravel \u0627\u06cc\u067e \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0639\u0627\u0645 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0626\u06cc \u062a\u06c1\u0648\u06ba \u0633\u06d2 \u06af\u0632\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u0635\u0627\u0631\u0641 \u0627\u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u06be\u06cc\u062c\u062a\u0627 \u06c1\u06d2\u060c \u0644\u0648\u0688 \u0628\u06cc\u0644\u0646\u0633\u0631 \u0627\u0633\u06d2 \u0627\u06cc\u067e \u0633\u0631\u0648\u0631\u0632 \u062a\u06a9 \u067e\u06c1\u0646\u0686\u0627\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 Laravel Redis \u0645\u06cc\u06ba \u06a9\u06cc\u0634 \u0634\u062f\u06c1 \u0646\u062a\u0627\u0626\u062c \u06a9\u0648 \u0686\u06cc\u06a9 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u062c\u0628 \u06a9\u0648\u0626\u06cc \u063a\u0644\u0637\u06cc \u06c1\u0648 \u062c\u0627\u062a\u06cc \u06c1\u06d2\u060c \u062a\u0648 \u06cc\u06c1 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0633\u06d2 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062d\u0633\u0627\u0628\u06cc \u0646\u062a\u0627\u0626\u062c \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 Redis \u0645\u06cc\u06ba \u0627\u0633\u0679\u0648\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0633\u0633\u062a \u062c\u0627\u0646\u0634\u06cc\u0646\u0648\u06ba \u06a9\u0648 \u0642\u0637\u0627\u0631 \u0645\u06cc\u06ba \u06a9\u06be\u0691\u0627 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u0627\u0631\u06a9\u0646 \u0628\u0639\u062f \u0645\u06cc\u06ba \u0627\u0633 \u06a9\u0627\u0645 \u06a9\u0648 \u0627\u0679\u06be\u0627 \u0644\u06cc\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0644\u0627\u0631\u0627\u0648\u06cc\u0644 \u0641\u0648\u0631\u0627\u064b \u062c\u0648\u0627\u0628 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06c1\u0645 \u062d\u0635\u06c1 \u06cc\u06c1 \u06c1\u06d2: \u0645\u0632\u06cc\u062f \u0627\u06cc\u067e \u0633\u0631\u0648\u0631\u0632 \u06a9\u0648 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u06a9\u0648\u0626\u06cc \u0627\u062b\u0631 \u0646\u06c1\u06cc\u06ba \u067e\u0691\u06d2 \u06af\u0627 \u0627\u06af\u0631 \u0633\u0648\u0627\u0644\u0627\u062a \u0633\u0633\u062a \u06c1\u06cc\u06ba\u060c \u0627\u0634\u0627\u0631\u06cc\u06c1 \u062c\u0627\u062a \u063a\u0627\u0626\u0628 \u06c1\u06cc\u06ba\u060c \u06cc\u0627 \u0642\u0637\u0627\u0631\u06cc\u06ba \u0627\u0648\u0648\u0631\u0644\u0648\u0688 \u06c1\u06cc\u06ba\u06d4 \u0627\u0641\u0642\u06cc \u0627\u0633\u06a9\u06cc\u0644\u0646\u06af \u0635\u0631\u0641 \u0627\u0633 \u0635\u0648\u0631\u062a \u0645\u06cc\u06ba \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u062c\u0628 \u0627\u0646 \u0633\u0631\u0648\u0631\u0632 \u06a9\u06d2 \u067e\u06cc\u0686\u06be\u06d2 \u0645\u0634\u062a\u0631\u06a9\u06c1 \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u0648 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u0627 \u062c\u0627 \u0633\u06a9\u06d2\u06d4<\/p>\n<h2 id=\"heading-common-laravel-bottlenecks\">Laravel \u06a9\u06cc \u0639\u0627\u0645 \u0631\u06a9\u0627\u0648\u0679\u06cc\u06ba\u06d4<\/h2>\n<p>Laravel \u062e\u0648\u062f \u0634\u0627\u0630 \u0648 \u0646\u0627\u062f\u0631 \u06c1\u06cc \u0627\u0633\u06a9\u06cc\u0644\u0646\u06af \u06a9\u06d2 \u0645\u0633\u0627\u0626\u0644 \u06a9\u0627 \u0633\u0628\u0628 \u0628\u0646\u062a\u0627 \u06c1\u06d2\u06d4 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0645\u0633\u0627\u0626\u0644 \u0627\u0633 \u0633\u06d2 \u067e\u06cc\u062f\u0627 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u0648\u0688 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633\u060c \u0646\u06cc\u0679 \u0648\u0631\u06a9 \u0627\u0648\u0631 \u0628\u06cc\u06a9 \u06af\u0631\u0627\u0624\u0646\u0688 \u0648\u0631\u06a9\u0631\u0632 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u06cc\u0633\u06d2 \u0628\u0627\u062a \u0686\u06cc\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-n1-queries\">N+1 \u0633\u0648\u0627\u0644\u0627\u062a<\/h3>\n<p>\u0627\u06cc\u06a9 \u0639\u0627\u0645 \u062d\u0645\u0644\u06c1 \u0622\u0648\u0631 N+1 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06c1\u06d2\u06d4 \u0645\u0627\u0688\u0644 \u06a9\u06cc \u0641\u06c1\u0631\u0633\u062a \u0644\u0648\u0688 \u06a9\u0631\u06cc\u06ba\u060c \u067e\u06be\u0631 \u0622\u06c1\u0633\u062a\u06c1 \u0622\u06c1\u0633\u062a\u06c1 \u06c1\u0631 \u0645\u0627\u0688\u0644 \u06a9\u06d2 \u0631\u0634\u062a\u0648\u06ba \u06a9\u0648 \u0686\u06be\u0648\u0626\u06d2\u06d4<\/p>\n<pre><code class=\"language-php\">use App\\Models\\Post;\n\n$posts = Post::latest()->take(50)->get();\n\nforeach (\\(posts as \\)post) {\n    echo $post->author->name;\n}\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u067e\u0648\u0633\u0679 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0633\u0648\u0627\u0644 \u06c1\u06d2 \u0627\u0648\u0631 \u0641\u06cc \u0645\u0635\u0646\u0641 \u0627\u06cc\u06a9 \u0633\u0648\u0627\u0644 \u06c1\u06d2\u06d4 \u06cc\u0639\u0646\u06cc \u0627\u06cc\u06a9 \u0635\u0641\u062d\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 51 \u0633\u0648\u0627\u0644\u0627\u062a\u06d4 \u0627\u0633 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u060c \u0631\u0634\u062a\u0648\u06ba \u06a9\u0648 \u0641\u0648\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0644\u0648\u0688 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-php\">use App\\Models\\Post;\n\n$posts = Post::with('author')\n    ->latest()\n    ->take(50)\n    ->get();\n\nforeach (\\(posts as \\)post) {\n    echo $post->author->name;\n}\n<\/code><\/pre>\n<p>\u067e\u06cc\u062f\u0627\u0648\u0627\u0631 \u0645\u06cc\u06ba\u060c \u06cc\u06c1 \u06a9\u067e\u0679\u06cc \u06c1\u06d2. \u06a9\u0646\u0679\u0631\u0648\u0644\u0631\u0632 \u0645\u06cc\u06ba\u060c \u0645\u062a\u0639\u0644\u0642\u06c1 \u0631\u0633\u0627\u0626\u06cc \u0627\u06a9\u062b\u0631 API \u0648\u0633\u0627\u0626\u0644\u060c \u0628\u0644\u06cc\u0688 \u0627\u062c\u0632\u0627\u0621\u060c \u0627\u0648\u0631 \u062a\u0635\u062f\u06cc\u0642 \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u067e\u0648\u0634\u06cc\u062f\u06c1 \u06c1\u0648\u062a\u06cc \u06c1\u06d2 \u062c\u06c1\u0627\u06ba \u06cc\u06c1 \u0648\u0627\u0636\u062d \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-missing-indexes\">\u0644\u0627\u067e\u062a\u06c1 \u0627\u0646\u0688\u06cc\u06a9\u0633<\/h3>\n<p>\u0627\u0646\u0688\u06cc\u06a9\u0633 \u06a9\u0648 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u0627 \u0633\u0628 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0645\u0646\u0627\u0641\u0639 \u0628\u062e\u0634 \u062a\u0628\u062f\u06cc\u0644\u06cc\u0648\u06ba \u0645\u06cc\u06ba \u0633\u06d2 \u0627\u06cc\u06a9 \u06c1\u06d2\u06d4 \u062f\u0631\u062c \u0630\u06cc\u0644 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u0631\u06cc\u06ba:<\/p>\n<pre><code class=\"language-php\">\\(orders = Order::where('account_id', \\)accountId)\n    ->where('status', 'paid')\n    ->whereBetween('created_at', [\\(start, \\)end])\n    ->latest()\n    ->paginate(50);\n<\/code><\/pre>\n<p>\u0627\u06af\u0631 <code>orders<\/code> \u0627\u06af\u0631 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 \u0644\u0627\u06a9\u06be\u0648\u06ba \u0642\u0637\u0627\u0631\u06cc\u06ba \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 \u0645\u0641\u06cc\u062f \u062c\u0627\u0645\u0639 \u0627\u0634\u0627\u0631\u06cc\u06c1 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u060c \u062a\u0648 \u0622\u067e \u06a9\u0627 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0636\u0631\u0648\u0631\u062a \u0633\u06d2 \u06a9\u06c1\u06cc\u06ba \u0632\u06cc\u0627\u062f\u06c1 \u0642\u0637\u0627\u0631\u06cc\u06ba \u0628\u0627\u0632\u06cc\u0627\u0641\u062a \u06a9\u0631\u06d2 \u06af\u0627\u06d4 \u0627\u06cc\u0633\u06d2 \u0627\u0634\u0627\u0631\u06cc\u06c1 \u062c\u0627\u062a \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba \u062c\u0648 \u0622\u067e \u06a9\u06d2 \u062f\u0631\u062d\u0642\u06cc\u0642\u062a \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u06d2 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0645\u0645\u0627\u062b\u0644 \u06c1\u0648\u06ba\u06d4<\/p>\n<pre><code class=\"language-php\">use Illuminate\\Database\\Migrations\\Migration;\nuse Illuminate\\Database\\Schema\\Blueprint;\nuse Illuminate\\Support\\Facades\\Schema;\n\nreturn new class extends Migration {\n    public function up(): void\n    {\n        Schema::table('orders', function (Blueprint $table) {\n            $table->index(['account_id', 'status', 'created_at']);\n        });\n    }\n\n    public function down(): void\n    {\n        Schema::table('orders', function (Blueprint $table) {\n            $table->dropIndex(['account_id', 'status', 'created_at']);\n        });\n    }\n};\n<\/code><\/pre>\n<p>\u062a\u0627\u06c1\u0645\u060c \u0627\u0646\u0688\u06cc\u06a9\u0633 \u0622\u0632\u0627\u062f \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u062c\u06af\u06c1 \u0644\u06cc\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0644\u06a9\u06be\u0646\u06d2 \u06a9\u0648 \u0633\u0633\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0635\u0644 \u0627\u0639\u0627\u062f\u06cc \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u06d2 \u0646\u0645\u0648\u0646\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u060c \u06c1\u0631 \u0627\u0633 \u06a9\u0627\u0644\u0645 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0646\u06c1\u06cc\u06ba \u062c\u0648 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u0645\u06cc\u06ba \u0638\u0627\u06c1\u0631 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 <code>where<\/code> \u0645\u06cc\u06ba<\/p>\n<h3 id=\"heading-inefficient-eager-loading\">\u063a\u06cc\u0631 \u0645\u0648\u062b\u0631 \u0634\u0648\u0642\u06cc\u0646 \u0644\u0648\u0688\u0646\u06af<\/h3>\n<p>\u0622\u067e \u0645\u062e\u0627\u0644\u0641 \u0633\u0645\u062a \u0645\u06cc\u06ba \u0628\u06c1\u062a \u062f\u0648\u0631 \u062c\u06be\u0648\u0644 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u062a\u0645\u0627\u0645 \u0631\u0634\u062a\u0648\u06ba \u06a9\u0648 \u0644\u0648\u0688 \u06a9\u0631\u0646\u0627 &quot;\u0635\u0631\u0641 \u0627\u0633 \u0635\u0648\u0631\u062a \u0645\u06cc\u06ba&#8221; \u0645\u06cc\u0645\u0648\u0631\u06cc \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u06cc\u06ba \u063a\u06cc\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0634\u062f\u06c1 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-php\">$users = User::with([\n    'profile',\n    'teams',\n    'roles.permissions',\n    'invoices.lineItems.product',\n])->get();\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0627\u06cc\u0688\u0645\u0646 \u06a9\u06cc \u062a\u0641\u0635\u06cc\u0644\u0627\u062a \u0648\u0627\u0644\u06d2 \u0635\u0641\u062d\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0679\u06be\u06cc\u06a9 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0627\u06cc\u06a9 \u0635\u0627\u0631\u0641 \u06a9\u0648 \u062f\u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0641\u06c1\u0631\u0633\u062a \u06a9\u06d2 \u0635\u0641\u062d\u06c1 \u067e\u0631\u060c \u0622\u067e \u0630\u0645\u06c1 \u062f\u0627\u0631 \u06c1\u06cc\u06ba\u06d4 \u0641\u0648\u0631\u06cc \u0644\u0648\u0688\u0646\u06af \u06a9\u0648 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u0635\u0631\u0641 \u0648\u06c1\u06cc \u06a9\u0627\u0644\u0645 \u0645\u0646\u062a\u062e\u0628 \u06a9\u0631\u06cc\u06ba \u062c\u0646 \u06a9\u06cc \u0622\u067e \u06a9\u0648 \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-php\">$users = User::query()\n    ->select(['id', 'name', 'email'])\n    ->with([\n        'profile:id,user_id,avatar_url',\n        'teams:id,name',\n    ])\n    ->latest()\n    ->paginate(25);\n<\/code><\/pre>\n<p>\u0627\u06cc\u06a9 \u0627\u0646\u062a\u0628\u0627\u06c1: \u062a\u0646\u06af \u0645\u0646\u062a\u062e\u0628 \u0641\u06c1\u0631\u0633\u062a\u06cc\u06ba \u0628\u0639\u062f \u06a9\u06d2 \u06a9\u0648\u0688 \u06a9\u0648 \u062a\u0648\u0691 \u0633\u06a9\u062a\u06cc \u06c1\u06cc\u06ba \u062c\u0633 \u0633\u06d2 \u0627\u0646 \u06a9\u0627\u0644\u0645\u0648\u06ba \u06a9\u06cc \u062a\u0648\u0642\u0639 \u06c1\u0648\u062a\u06cc \u06c1\u06d2 \u062c\u0648 \u0622\u067e \u0646\u06d2 \u0644\u0648\u0688 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u0633 \u0679\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06a9\u0648 \u067e\u0691\u06be\u0646\u06d2 \u067e\u0631 \u0645\u0631\u06a9\u0648\u0632 \u0627\u06cc\u0646\u0688 \u067e\u0648\u0627\u0626\u0646\u0679\u0633 \u06a9\u06d2 \u0642\u0631\u06cc\u0628 \u0631\u06a9\u06be\u06cc\u06ba\u060c \u062c\u06c1\u0627\u06ba \u0641\u0648\u0627\u0626\u062f \u0648\u0627\u0636\u062d \u06c1\u0648\u06ba\u06d4<\/p>\n<h3 id=\"heading-synchronous-processing\">\u06c1\u0645 \u0648\u0642\u062a \u0633\u0627\u0632 \u067e\u0631\u0648\u0633\u06cc\u0633\u0646\u06af<\/h3>\n<p>\u06c1\u0627\u0626\u06cc \u0679\u0631\u06cc\u0641\u06a9 \u0627\u06cc\u067e\u0633 \u06a9\u0648 \u0645\u062e\u062a\u0635\u0631 \u0648\u06cc\u0628 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc\u06ba \u062f\u0631\u06a9\u0627\u0631 \u06c1\u0648\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0627\u06cc \u0645\u06cc\u0644 \u0628\u06be\u06cc\u062c\u0646\u0627\u060c \u067e\u06cc \u0688\u06cc \u0627\u06cc\u0641 \u0628\u0646\u0627\u0646\u0627\u060c \u062a\u06be\u0631\u0688 \u067e\u0627\u0631\u0679\u06cc APIs \u06a9\u0648 \u06a9\u0627\u0644 \u06a9\u0631\u0646\u0627\u060c \u0627\u0645\u06cc\u062c\u0632 \u06a9\u0627 \u0633\u0627\u0626\u0632 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u0627\u060c \u0627\u0648\u0631 \u0627\u06cc\u06a9\u0633\u067e\u0648\u0631\u0679 \u0628\u0646\u0627\u0646\u0627 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06d2 \u0686\u06a9\u0631 \u0633\u06d2 \u0628\u0627\u06c1\u0631 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0648\u0631\u0698\u0646 \u0646\u0642\u0635\u0627\u0646 \u06a9\u0627 \u0633\u0628\u0628 \u0628\u0646 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0627\u06af\u0631:<\/p>\n<pre><code class=\"language-php\">public function store(Request $request)\n{\n    \\(order = Order::create(\\)request->validated());\n\n    Mail::to(\\(order->user)->send(new OrderReceipt(\\)order));\n\n    return response()->json($order, 201);\n}\n<\/code><\/pre>\n<p>\u0627\u0633 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u060c \u06cc\u06c1 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0642\u0637\u0627\u0631 \u0645\u06cc\u06ba \u062f\u06be\u06a9\u06cc\u0644\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-php\">public function store(StoreOrderRequest $request)\n{\n    \\(order = Order::create(\\)request->validated());\n\n    SendOrderReceipt::dispatch($order->id);\n\n    return response()->json([\n        'id' => $order->id,\n        'status' => 'accepted',\n    ], 202);\n}\n<\/code><\/pre>\n<p>\u0627\u0628 \u062c\u0648\u0627\u0628 \u06a9\u06d2 \u0627\u0648\u0642\u0627\u062a \u0622\u067e \u06a9\u06d2 \u0645\u06cc\u0644 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0646\u0646\u062f\u06c1 \u067e\u0631 \u0645\u0646\u062d\u0635\u0631 \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u0622\u067e \u06a9\u06d2 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0646\u0646\u062f\u06c1 \u06a9\u06cc \u062f\u0648\u067e\u06c1\u0631 \u0633\u0633\u062a \u06c1\u06d2\u060c \u062a\u0648 \u0642\u0637\u0627\u0631 \u0627\u0633\u06d2 \u062c\u0630\u0628 \u06a9\u0631 \u0644\u06d2 \u06af\u06cc \u0627\u0648\u0631 \u0622\u067e \u06a9\u0648 \u0627\u0646\u062a\u0638\u0627\u0631 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u0646\u0627 \u067e\u0691\u06d2 \u06af\u0627\u06d4<\/p>\n<h3 id=\"heading-large-payloads\">\u0628\u0691\u06d2 \u067e\u06d2 \u0644\u0648\u0688<\/h3>\n<p>\u0627\u06cc\u06a9 JSON \u0631\u062f\u0639\u0645\u0644 \u062c\u0648 \u0628\u06c1\u062a \u0628\u0691\u0627 \u06c1\u06d2 \u0633\u0644\u0633\u0644\u06c1 \u0645\u06cc\u06ba \u0645\u0648\u062c\u0648\u062f \u06c1\u0631 \u0627\u06cc\u06a9 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0646\u0642\u0635\u0627\u0646 \u062f\u06c1 \u06c1\u06d2\u06d4 \u06cc\u0639\u0646\u06cc\u060c \u0627\u06cc\u067e \u0633\u0631\u0648\u0631 \u062c\u0648 \u0627\u0633\u06d2 \u0633\u06cc\u0631\u06cc\u0644\u0627\u0626\u0632 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0646\u06cc\u0679 \u0648\u0631\u06a9 \u062c\u0648 \u0627\u0633\u06d2 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u06a9\u0644\u0627\u0626\u0646\u0679 \u062c\u0648 \u0627\u0633\u06d2 \u067e\u0627\u0631\u0633 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0639\u0627\u0645 \u063a\u0644\u0637\u06cc \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u062c\u0628 \u0622\u067e \u0633\u0645\u0631\u06cc \u0648\u0627\u067e\u0633 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0627\u0631\u0627\u062f\u06c1 \u0631\u06a9\u06be\u062a\u06d2 \u06c1\u0648\u06ba \u062a\u0648 \u067e\u0648\u0631\u06d2 \u0645\u0627\u0688\u0644 \u06a9\u0648 \u0648\u0627\u067e\u0633 \u06a9\u0631 \u062f\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-php\">return User::with('orders', 'invoices', 'teams')->findOrFail($id);\n<\/code><\/pre>\n<p>\u0627\u0633 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u060c \u0648\u0627\u0636\u062d API \u0648\u0633\u0627\u0626\u0644 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-php\">use Illuminate\\Http\\Resources\\Json\\JsonResource;\n\nclass UserSummaryResource extends JsonResource\n{\n    public function toArray($request): array\n    {\n        return [\n            'id' => $this->id,\n            'name' => $this->name,\n            'avatar_url' => $this->profile?->avatar_url,\n            'plan' => $this->subscription_plan,\n        ];\n    }\n}\n<\/code><\/pre>\n<p>\u0686\u06be\u0648\u0679\u06d2\u060c \u0633\u0648\u0686\u06d2 \u0633\u0645\u062c\u06be\u06d2 \u062c\u0648\u0627\u0628\u06cc \u0645\u0639\u0627\u06c1\u062f\u0648\u06ba \u0633\u06d2 \u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u0642\u06cc\u0645\u062a\u0648\u06ba \u06a9\u0627 \u0627\u0646\u062f\u0627\u0632\u06c1 \u0644\u06af\u0627\u0646\u0627 \u0627\u0648\u0631 \u062d\u0627\u062f\u062b\u0627\u062a\u06cc \u067e\u0627\u0628\u0646\u062f\u06cc \u06a9\u0648 \u0631\u0648\u06a9\u0646\u0627 \u0622\u0633\u0627\u0646 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-expensive-joins\">\u0645\u06c1\u0646\u06af\u0627 \u0634\u0645\u0648\u0644\u06cc\u062a<\/h3>\n<p>\u062c\u0648\u0627\u0626\u0646\u0632 \u06a9\u0627\u0631\u0622\u0645\u062f \u06c1\u06cc\u06ba\u060c \u0644\u06cc\u06a9\u0646 \u0628\u0691\u06d2 \u0679\u06cc\u0628\u0644\u0632 \u067e\u0631 \u0645\u06c1\u0646\u06af\u06d2 \u062c\u0648\u0627\u0626\u0646\u0632 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u0627 \u0648\u0642\u062a \u06a9\u06be\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 \u062c\u0628 \u063a\u06cc\u0631 \u0627\u0634\u0627\u0631\u06cc\u06c1 \u0634\u062f\u06c1 \u06a9\u0627\u0644\u0645\u0648\u06ba \u06a9\u0648 \u0686\u06be\u0627\u0646\u0679\u062a\u06d2 \u06cc\u0627 \u0641\u0644\u0679\u0631 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-php\">$rows = DB::table('orders')\n    ->join('users', 'users.id', '=', 'orders.user_id')\n    ->join('accounts', 'accounts.id', '=', 'users.account_id')\n    ->where('accounts.region', 'us-east')\n    ->where('orders.status', 'paid')\n    ->orderByDesc('orders.created_at')\n    ->limit(100)\n    ->get();\n<\/code><\/pre>\n<p>\u0622\u067e \u06a9\u06d2 \u067e\u06cc\u0645\u0627\u0646\u06d2 \u067e\u0631 \u0645\u0646\u062d\u0635\u0631 \u06c1\u06d2\u060c \u0622\u067e \u06a9\u0648 \u0686\u06be\u0648\u0679\u06d2 \u0641\u06cc\u0644\u0688\u0632 \u06a9\u0648 \u063a\u06cc\u0631 \u0645\u0639\u0645\u0648\u0644\u06cc \u0628\u0646\u0627\u0646\u06d2\u060c \u0631\u067e\u0648\u0631\u0679\u0646\u06af \u0679\u06cc\u0628\u0644\u0632 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u06cc\u0627 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0644\u06cc\u0646 \u062f\u06cc\u0646 \u06a9\u06d2 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0633\u06d2 \u062a\u062c\u0632\u06cc\u06c1 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u067e\u0691 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4 \u063a\u06cc\u0631 \u0645\u0639\u0645\u0648\u0644\u06cc \u06c1\u0648\u0646\u06d2 \u06a9\u0648 \u0634\u06a9\u0633\u062a \u06a9\u0627 \u0627\u0639\u062a\u0631\u0627\u0641 \u0646\u06c1 \u0633\u0645\u062c\u06be\u06cc\u06ba\u06d4 \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f \u0641\u06cc\u0644\u0688 \u06a9\u0627\u067e\u06cc\u060c \u062c\u06cc\u0633\u06d2 <code>account_id<\/code> \u0627\u0648\u067e\u0631 <code>orders<\/code> \u0622\u067e \u06af\u0631\u0645 \u0631\u0627\u0633\u062a\u0648\u06ba \u0633\u06d2 \u0645\u06c1\u0646\u06af\u06d2 \u062c\u0648\u0691\u0648\u06ba \u06a9\u0648 \u062e\u062a\u0645 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0622\u067e \u062c\u0648 \u0642\u06cc\u0645\u062a \u0627\u062f\u0627 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u0648\u06c1 \u0688\u067e\u0644\u06cc\u06a9\u06cc\u0679 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u0645\u0633\u062a\u0642\u0644 \u0631\u06a9\u06be\u0646\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u06cc\u06c1 \u0627\u06cc\u06a9 \u0642\u0627\u0628\u0644 \u0642\u062f\u0631 \u062a\u062c\u0627\u0631\u062a \u06c1\u0648 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-how-to-optimize-the-database\">\u0627\u067e\u0646\u06d2 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u0628\u06c1\u062a\u0631 \u0628\u0646\u0627\u0626\u06cc\u06ba<\/h2>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u06cc Laravel \u0627\u06cc\u067e \u0633\u0633\u062a \u06c1\u06d2\u060c \u062a\u0648 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u067e\u06c1\u0644\u06cc \u062c\u06af\u06c1 \u0622\u067e \u06a9\u0627 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-add-indexes-around-real-query-patterns\">\u0627\u0635\u0644 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u06d2 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u06d2 \u0627\u0631\u062f \u06af\u0631\u062f \u0627\u0646\u0688\u06cc\u06a9\u0633 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u0633\u0633\u062a \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u06d2 \u0644\u0627\u06af\u0632\u060c \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0645\u06cc\u0679\u0631\u06a9\u0633\u060c \u0627\u0648\u0631 \u0627\u0646\u062a\u0634\u0627\u0631 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0646\u0634\u0627\u0646\u0627\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u0622\u067e \u06a9\u06cc \u0627\u06cc\u067e \u0627\u06a9\u0627\u0624\u0646\u0679 \u06a9\u06d2 \u0644\u062d\u0627\u0638 \u0633\u06d2 \u0645\u0633\u0644\u0633\u0644 \u0641\u0639\u0627\u0644 \u0633\u0628\u0633\u06a9\u0631\u067e\u0634\u0646\u0632 \u062a\u0644\u0627\u0634 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u060c \u062a\u0648 \u0627\u06cc\u06a9 \u062c\u0627\u0645\u0639 \u0627\u0646\u0688\u06cc\u06a9\u0633 \u0628\u0646\u0627\u0626\u06cc\u06ba \u062c\u0648 \u0627\u0633 \u0631\u0633\u0627\u0626\u06cc \u06a9\u06d2 \u067e\u06cc\u0679\u0631\u0646 \u0633\u06d2 \u0645\u0645\u0627\u062b\u0644 \u06c1\u0648\u06d4<\/p>\n<pre><code class=\"language-php\">Schema::table('subscriptions', function (Blueprint $table) {\n    $table->index(['account_id', 'status', 'renews_at']);\n});\n<\/code><\/pre>\n<p>\u067e\u06be\u0631 \u06c1\u0645 \u0627\u06cc\u06a9 \u0633\u0648\u0627\u0644 \u0644\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0627\u06a9\u06c1 \u06c1\u0645 \u0627\u0635\u0644 \u0645\u06cc\u06ba \u0627\u0646\u0688\u06cc\u06a9\u0633 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-php\">\\(subscription = Subscription::where('account_id', \\)accountId)\n    ->where('status', 'active')\n    ->where('renews_at', '>=', now())\n    ->orderBy('renews_at')\n    ->first();\n<\/code><\/pre>\n<p>\u062f\u0648\u0691\u0646\u06d2 \u06a9\u06cc \u0639\u0627\u062f\u062a \u0688\u0627\u0644\u06cc\u06ba\u06d4 <code>EXPLAIN<\/code> \u0627\u0646\u0688\u06cc\u06a9\u0633 \u06a9\u0648 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u06cc\u06c1 \u062f\u06cc\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u06c1 \u0622\u06cc\u0627 \u067e\u0644\u0627\u0646 \u0628\u062f\u0644 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4 \u0627\u0634\u0627\u0631\u06cc\u06c1 \u062c\u0627\u062a \u062c\u0646\u06c1\u06cc\u06ba \u0627\u0635\u0644\u0627\u062d \u06a9\u0646\u0646\u062f\u06c1 \u0646\u0638\u0631 \u0627\u0646\u062f\u0627\u0632 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0648\u06c1 \u0635\u0631\u0641 \u0627\u0648\u0648\u0631 \u06c1\u06cc\u0688 \u0644\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-use-eager-loading-deliberately\">\u0634\u0648\u0642\u06cc\u0646 \u0644\u0648\u0688\u0646\u06af \u06a9\u0627 \u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644<\/h3>\n<p>\u0641\u0648\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0644\u0648\u0688\u0646\u06af \u0633\u06d2 \u0645\u06cc\u0644 \u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u0646\u0642\u0637\u06c1 \u0627\u0635\u0644 \u0645\u06cc\u06ba \u0648\u0627\u067e\u0633 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0641\u06c1\u0631\u0633\u062a \u06a9\u06d2 \u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u0646\u06a9\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u062a\u0639\u0644\u0642\u0627\u062a \u06a9\u0648 \u06a9\u0645 \u0627\u0648\u0631 \u0645\u062d\u062f\u0648\u062f \u0631\u06a9\u06be\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-php\">$projects = Project::query()\n    ->select(['id', 'account_id', 'name', 'updated_at'])\n    ->withCount('openTasks')\n    ->with([\n        'owner:id,name',\n    ])\n    ->where('account_id', $accountId)\n    ->latest('updated_at')\n    ->paginate(30);\n<\/code><\/pre>\n<p>\u062c\u0628 \u0622\u067e \u06a9\u0648 \u0635\u0631\u0641 \u0646\u0645\u0628\u0631\u0648\u06ba \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u060c <code>withCount<\/code> \u06cc\u06c1 \u062d\u0633\u0627\u0628 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u0648\u0631\u06d2 \u0631\u0634\u062a\u06d2 \u06a9\u0648 \u0644\u0648\u0688 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u0628\u06c1\u062a\u0631 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-php\">$teams = Team::query()\n    ->withCount([\n        'members',\n        'invitations as pending_invitations_count' => fn (\\(query) => \\)query->whereNull('accepted_at'),\n    ])\n    ->paginate(25);\n<\/code><\/pre>\n<p>\u0645\u06cc\u0645\u0648\u0631\u06cc \u06a9\u06cc \u062c\u06af\u06c1 \u06cc\u06a9\u0633\u0627\u06ba \u0631\u06c1\u062a\u06cc \u06c1\u06d2\u060c \u062c\u0648 \u0641\u06c1\u0631\u0633\u062a \u06a9\u06d2 \u0635\u0641\u062d\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u0641\u0635\u06cc\u0644\u06cc \u0635\u0641\u062d\u0627\u062a \u06a9\u06d2 \u0645\u0642\u0627\u0628\u0644\u06d2 \u0645\u06cc\u06ba \u0632\u06cc\u0627\u062f\u06c1 \u0627\u06c1\u0645 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-optimize-queries-before-adding-hardware\">\u06c1\u0627\u0631\u0688 \u0648\u06cc\u0626\u0631 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0633\u0648\u0627\u0644\u0627\u062a \u06a9\u0648 \u0628\u06c1\u062a\u0631 \u0628\u0646\u0627\u0626\u06cc\u06ba<\/h3>\n<p>\u0627\u06cc\u06a9 \u0628\u0691\u06cc \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0645\u062b\u0627\u0644 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0622\u067e \u06a9\u0648 \u06a9\u0686\u06be \u0648\u0642\u062a \u062e\u0631\u06cc\u062f \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0646\u0627\u06a9\u0627\u0631\u06c1 \u0633\u0648\u0627\u0644\u0627\u062a \u06a9\u0648 \u0628\u06be\u06cc \u0686\u06be\u067e\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u062a\u06a9 \u06a9\u06c1 \u0627\u06af\u0644\u06cc \u0679\u0631\u06cc\u0641\u06a9 \u0686\u06be\u0644\u0627\u0646\u06af \u0627\u0646\u06c1\u06cc\u06ba \u062f\u0648\u0628\u0627\u0631\u06c1 \u0628\u06d2 \u0646\u0642\u0627\u0628 \u0646\u06c1\u06cc\u06ba \u06a9\u0631 \u062f\u06cc\u062a\u06cc\u06d4 \u0627\u06cc\u06a9 \u0628\u0691\u06cc \u0645\u0634\u06cc\u0646 \u062e\u0631\u06cc\u062f\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0645\u0639\u0644\u0648\u0645 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u06a9\u0648\u0646 \u0633\u0627 \u0633\u0648\u0627\u0644 \u0622\u067e \u06a9\u0648 \u0633\u0628 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u062e\u0631\u0686 \u06a9\u0631\u06d2 \u06af\u0627\u06d4 \u0645\u0642\u0627\u0645\u06cc \u06cc\u0627 \u0627\u0633\u0679\u06cc\u062c\u0646\u06af \u0645\u0627\u062d\u0648\u0644 \u0645\u06cc\u06ba\u060c \u0633\u0633\u062a \u0645\u0627\u062d\u0648\u0644 \u0645\u06cc\u06ba \u0644\u0627\u06af \u0627\u0646 \u06a9\u0631\u0646\u0627 \u0622\u0633\u0627\u0646 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-php\">use Illuminate\\Database\\Events\\QueryExecuted;\nuse Illuminate\\Support\\Facades\\DB;\nuse Illuminate\\Support\\Facades\\Log;\n\nDB::listen(function (QueryExecuted $query) {\n    if ($query->time > 100) {\n        Log::warning('Slow query detected', [\n            'sql' => $query->toRawSql(),\n            'time_ms' => $query->time,\n        ]);\n    }\n});\n<\/code><\/pre>\n<p>\u067e\u06cc\u062f\u0627\u0648\u0627\u0631 \u0645\u06cc\u06ba \u0645\u062d\u062a\u0627\u0637 \u0631\u06c1\u06cc\u06ba\u06d4 \u0628\u0627\u0626\u0646\u0688\u0646\u06af\u0632 \u0645\u06cc\u06ba \u062d\u0633\u0627\u0633 \u0688\u06cc\u0679\u0627 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u062a\u0641\u0635\u06cc\u0644\u06cc \u0644\u0627\u06af\u0646\u06af \u06a9\u06cc \u0628\u0691\u06cc \u0645\u0642\u062f\u0627\u0631 \u0645\u06cc\u06ba \u06a9\u0627\u0631\u06a9\u0631\u062f\u06af\u06cc \u06a9\u06d2 \u0627\u067e\u0646\u06d2 \u0645\u0633\u0627\u0626\u0644 \u06c1\u0648 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-process-large-tables-with-chunking\">\u0686\u0646\u06a9\u0646\u06af \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0628\u0691\u06cc \u0645\u06cc\u0632\u0648\u06ba \u067e\u0631 \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc \u06a9\u0631\u0646\u0627<\/h3>\n<p>\u0628\u06cc\u0686 \u0622\u067e\u0631\u06cc\u0634\u0646\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u0648\u0631\u06cc \u0628\u0691\u06cc \u0645\u06cc\u0632\u06cc\u06ba \u0645\u06cc\u0645\u0648\u0631\u06cc \u0645\u06cc\u06ba \u0644\u0627\u0646\u06d2 \u0633\u06d2 \u06af\u0631\u06cc\u0632 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-php\">User::where('is_active', true)\n    ->chunkById(1000, function ($users) {\n        foreach (\\(users as \\)user) {\n            RefreshUserSearchIndex::dispatch($user->id);\n        }\n    });\n<\/code><\/pre>\n<p><code>chunkById<\/code>    \u0627\u06af\u0631 \u0622\u067e\u0631\u06cc\u0634\u0646 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u0642\u0637\u0627\u0631\u06cc\u06ba \u0628\u062f\u0644 \u0633\u06a9\u062a\u06cc \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u06cc\u06c1 \u0622\u0641\u0633\u06cc\u0679 \u067e\u0631 \u0645\u0628\u0646\u06cc \u0686\u0646\u06a9\u0646\u06af \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0645\u062d\u0641\u0648\u0638 \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06cc\u06c1 \u0639\u062f\u062f\u06cc \u0622\u0641\u0633\u06cc\u0679 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0622\u062e\u0631\u06cc \u062f\u06a9\u06be\u0627\u0626\u06cc \u062f\u06cc\u0646\u06d2 \u0648\u0627\u0644\u06cc ID \u06a9\u0648 \u0679\u0631\u06cc\u06a9 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0628\u0691\u06cc \u0628\u0631\u0622\u0645\u062f\u0627\u062a \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0633\u0679\u0631\u06cc\u0645 \u06cc\u0627 \u0628\u06cc\u0686 \u0631\u06cc\u06a9\u0627\u0631\u0688\u06d4<\/p>\n<p>\u0622\u0641 \u0633\u06cc\u0679 \u0635\u0641\u062d\u06c1 \u0628\u0646\u062f\u06cc \u0633\u0633\u062a \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0635\u0627\u0631\u0641 \u06af\u06c1\u0631\u0627\u0626\u06cc \u0645\u06cc\u06ba \u0627\u0633\u06a9\u0631\u0648\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u0648 \u062a\u0645\u0627\u0645 \u0642\u0637\u0627\u0631\u0648\u06ba \u06a9\u0648 \u0686\u06be\u0648\u0691\u0646\u0627 \u067e\u0691\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0648\u06c1 \u0648\u0627\u067e\u0633 \u0646\u06c1\u06cc\u06ba \u0622\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0641\u06cc\u0688\u0632\u060c \u0622\u0688\u0679 \u0644\u0627\u06af\u0632\u060c \u067e\u06cc\u063a\u0627\u0645\u0627\u062a\u060c \u0627\u0648\u0631 \u0679\u0627\u0626\u0645 \u0644\u0627\u0626\u0646\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u06a9\u0631\u0633\u0631 \u0635\u0641\u062d\u06c1 \u0628\u0646\u062f\u06cc \u0632\u06cc\u0627\u062f\u06c1 \u0645\u0646\u0627\u0633\u0628 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-php\">$events = AuditEvent::query()\n    ->where('account_id', $accountId)\n    ->orderByDesc('id')\n    ->cursorPaginate(50);\n\nreturn AuditEventResource::collection($events);\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0627\u06cc\u06a9 \u0645\u0633\u062a\u062d\u06a9\u0645\u060c \u0627\u0634\u0627\u0631\u06cc\u06c1 \u062a\u0631\u062a\u06cc\u0628 \u0648\u0627\u0644\u06d2 \u06a9\u0627\u0644\u0645 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0644\u0627\u0645\u062d\u062f\u0648\u062f \u0627\u0633\u06a9\u0631\u0648\u0644 \u0641\u06cc\u0688\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u062f\u0631\u06a9\u0627\u0631 \u0628\u06d2 \u062a\u0631\u062a\u06cc\u0628 \u0635\u0641\u062d\u06c1 \u0646\u0645\u0628\u0631\u0648\u06ba \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0627\u06af\u0644\u06d2\/\u067e\u0686\u06be\u0644\u06d2 \u06a9\u0631\u0633\u0631 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-split-reads-with-read-replicas\">\u0627\u0633\u067e\u0644\u0679 \u0631\u06cc\u0688\u0632 \u06a9\u0648 \u067e\u0691\u06be\u0646\u06d2 \u0648\u0627\u0644\u06cc \u0646\u0642\u0644\u0648\u06ba \u0645\u06cc\u06ba<\/h3>\n<p>\u062c\u06cc\u0633\u06d2 \u062c\u06cc\u0633\u06d2 \u067e\u0691\u06be\u0627 \u06c1\u0648\u0627 \u0679\u0631\u06cc\u0641\u06a9 \u0628\u0691\u06be\u062a\u0627 \u06c1\u06d2\u060c \u0646\u0642\u0644 \u0628\u0646\u06cc\u0627\u062f\u06cc \u067e\u0631 \u0628\u0648\u062c\u06be \u06a9\u0648 \u06a9\u0645 \u06a9\u0631 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-php\">'mysql' => [\n    'driver' => 'mysql',\n    'read' => [\n        'host' => [\n            env('DB_READ_HOST', '127.0.0.1'),\n        ],\n    ],\n    'write' => [\n        'host' => [\n            env('DB_WRITE_HOST', '127.0.0.1'),\n        ],\n    ],\n    'sticky' => true,\n    'database' => env('DB_DATABASE', 'laravel'),\n    'username' => env('DB_USERNAME', 'root'),\n    'password' => env('DB_PASSWORD', ''),\n],\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>sticky<\/code> \u0622\u067e\u0634\u0646 \u0627\u0633\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u0644\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u0644\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u06a9\u0646\u06a9\u0634\u0646 \u067e\u0631 \u067e\u0691\u06be\u0646\u06d2 \u06a9\u0648 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be \u06a9\u0631 \u067e\u0691\u06be\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u0644\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u062d\u06cc\u0631\u062a \u0633\u06d2 \u0628\u0686\u0646\u06d2 \u0645\u06cc\u06ba \u0645\u062f\u062f \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0646\u0642\u0644\u0648\u06ba \u0645\u06cc\u06ba \u0646\u0642\u0644 \u0645\u06cc\u06ba \u062a\u0627\u062e\u06cc\u0631 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u060c \u0627\u0648\u0631 \u06cc\u06c1 \u062a\u0627\u062e\u06cc\u0631 \u0627\u06c1\u0645 \u06c1\u06d2\u06d4 \u062c\u0628 \u062a\u06a9 \u06a9\u06c1 \u0622\u067e \u06a9\u0627 \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0628\u06c1\u0627\u0624 \u0635\u062d\u06cc\u062d \u0645\u0639\u0646\u0648\u06ba \u0645\u06cc\u06ba \u067e\u0631\u0627\u0646\u06d2 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u062f\u06cc\u06a9\u06be\u0646\u06d2 \u06a9\u0648 \u0628\u0631\u062f\u0627\u0634\u062a \u0646\u06c1 \u06a9\u0631 \u0633\u06a9\u06d2\u060c \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642\u0627\u062a\u060c \u067e\u0627\u0633 \u0648\u0631\u0688 \u06a9\u06cc \u062a\u0628\u062f\u06cc\u0644\u06cc\u0648\u06ba\u060c \u0627\u062c\u0627\u0632\u062a \u06a9\u06cc \u062c\u0627\u0646\u0686 \u067e\u0691\u062a\u0627\u0644\u060c \u06cc\u0627 \u06a9\u0686\u06be \u0633\u06cc\u06a9\u0646\u0688\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u0631\u0627\u0646\u06cc \u06c1\u0648 \u062c\u0627\u0646\u06d2 \u0648\u0627\u0644\u06cc \u0646\u0642\u0644\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0633\u062a\u0642\u0644 \u0645\u0632\u0627\u062c\u06cc \u0633\u06d2 \u062d\u0633\u0627\u0633 \u06a9\u0633\u06cc \u0628\u06be\u06cc \u0686\u06cc\u0632 \u06a9\u0648 \u0631\u0648\u0679 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-how-to-scale-with-redis\">\u0631\u06cc\u0688\u06cc\u0633 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u067e\u06cc\u0645\u0627\u0646\u06c1 \u06a9\u06cc\u0633\u06d2 \u06a9\u0631\u06cc\u06ba\u06d4<\/h2>\n<p>Redis \u0627\u06a9\u062b\u0631 Laravel \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u0627\u0633\u0679\u06cc\u06a9 \u0645\u06cc\u06ba \u0628\u06c1\u062a \u0633\u06d2 \u06a9\u0627\u0645 \u0627\u0646\u062c\u0627\u0645 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u060c \u0628\u0634\u0645\u0648\u0644 \u06a9\u06cc\u0634\u0646\u06af\u060c \u0633\u06cc\u0634\u0646\u0632\u060c \u0631\u06cc\u0679 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u0646\u0627\u060c \u0642\u0637\u0627\u0631\u06cc\u06ba\u060c \u062a\u0627\u0644\u06d2\u060c \u0627\u0648\u0631 Horizon \u0645\u06cc\u0679\u0631\u06a9\u0633\u06d4 \u06cc\u06c1 \u062a\u06cc\u0632 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u067e\u06be\u0631 \u0628\u06be\u06cc \u06a9\u0686\u06be \u0633\u0648\u0686\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2: \u0645\u0639\u0642\u0648\u0644 \u06a9\u0644\u06cc\u062f\u06cc \u0688\u06cc\u0632\u0627\u0626\u0646\u060c \u0645\u06cc\u0639\u0627\u062f \u062e\u062a\u0645 \u06c1\u0648\u0646\u06d2 \u06a9\u06cc \u067e\u0627\u0644\u06cc\u0633\u06cc\u060c \u0645\u06cc\u0645\u0648\u0631\u06cc \u06a9\u06cc \u0646\u06af\u0631\u0627\u0646\u06cc\u060c \u0627\u0648\u0631 \u0628\u0627\u0637\u0644 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062d\u0642\u06cc\u0642\u06cc \u0645\u0646\u0635\u0648\u0628\u06c1 \u0628\u0646\u062f\u06cc\u06d4<\/p>\n<h3 id=\"heading-caching\">\u06a9\u06cc\u0634\u0646\u06af<\/h3>\n<p>\u06a9\u06cc\u0634 \u0645\u06c1\u0646\u06af\u06cc \u0631\u06cc\u0688\u0632 \u062c\u0646 \u06a9\u06cc \u0627\u06a9\u062b\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u0648\u06c1 \u0642\u062f\u0631\u06d2 \u0628\u0627\u0633\u06cc \u06c1\u0648 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-php\">use Illuminate\\Support\\Facades\\Cache;\n\n$stats = Cache::remember(\n    \"accounts:{$account->id}:dashboard-stats\",\n    now()->addMinutes(5),\n    fn () => DashboardStats::forAccount($account)->calculate()\n);\n<\/code><\/pre>\n<p>\u0634\u0627\u0631\u0679 \u0679\u0627\u0626\u0645 \u0679\u0648 \u0644\u0627\u0626\u06cc\u0648 (TTL) \u0642\u062f\u0631\u06cc\u06ba \u062d\u06cc\u0631\u062a \u0627\u0646\u06af\u06cc\u0632 \u0637\u0648\u0631 \u067e\u0631 \u0637\u0648\u06cc\u0644 \u0639\u0631\u0635\u06d2 \u062a\u06a9 \u0686\u0644\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 5 \u0645\u0646\u0679 \u06a9\u0627 \u06a9\u06cc\u0634 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0688\u06cc\u0634 \u0628\u0648\u0631\u0688\u0632 \u067e\u0631 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u062a\u0627\u0632\u06c1 \u0631\u06a9\u06be\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u06c1\u0632\u0627\u0631\u0648\u06ba \u0688\u067e\u0644\u06cc\u06a9\u06cc\u0679 \u0633\u0648\u0627\u0644\u0627\u062a \u06a9\u0648 \u0635\u0627\u0641 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06af\u0631 \u0645\u0639\u0644\u0648\u0645 \u0648\u0627\u0642\u0639\u06c1 \u06a9\u06d2 \u0628\u0639\u062f \u0688\u06cc\u0679\u0627 \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644\u06cc \u0622\u062a\u06cc \u06c1\u06d2 \u062a\u0648 \u0627\u0633\u06d2 \u0648\u0627\u0636\u062d \u0637\u0648\u0631 \u067e\u0631 \u0628\u0627\u0637\u0644 \u06a9\u0631 \u062f\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-php\">Order::created(function (Order $order) {\n    Cache::forget(\"accounts:{$order->account_id}:dashboard-stats\");\n});\n<\/code><\/pre>\n<p>\u06a9\u06cc\u0634\u0646\u06af \u0627\u0633 \u0648\u0642\u062a \u0628\u06c1\u062a\u0631\u06cc\u0646 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u062c\u0628 \u06a9\u06cc\u0632 \u0642\u0627\u0628\u0644 \u0642\u06cc\u0627\u0633 \u06c1\u0648\u06ba \u0627\u0648\u0631 \u063a\u0644\u0637\u06cc\u0627\u06ba \u0627\u0646\u062f\u0627\u0632\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0688\u0648\u0645\u06cc\u0646 \u0627\u06cc\u0648\u0646\u0679\u0633 \u0633\u06d2 \u0645\u0646\u0633\u0644\u06a9 \u06c1\u0648\u06ba\u06d4<\/p>\n<h3 id=\"heading-sessions\">\u0633\u06cc\u0634\u0646<\/h3>\n<p>\u0627\u0641\u0642\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633\u06a9\u06cc\u0644 \u06a9\u0631\u062f\u06c1 \u0627\u06cc\u067e \u0633\u0631\u0648\u0631\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0641\u0627\u0626\u0644 \u067e\u0631 \u0645\u0628\u0646\u06cc \u0633\u06cc\u0634\u0646\u0632 \u0627\u06cc\u06a9 \u0646\u0642\u0635\u0627\u0646 \u06c1\u06cc\u06ba\u06d4 \u0627\u06af\u0644\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0633\u06cc \u062f\u0648\u0633\u0631\u06d2 \u0633\u0631\u0648\u0631 \u062a\u06a9 \u067e\u06c1\u0646\u0686 \u0633\u06a9\u062a\u06cc \u06c1\u06d2 \u062c\u0633 \u0646\u06d2 \u06a9\u0628\u06be\u06cc \u0633\u06cc\u0634\u0646 \u0646\u06c1\u06cc\u06ba \u062f\u06cc\u06a9\u06be\u0627\u06d4 \u0631\u06cc\u0688\u06cc\u0633 \u06cc\u0627 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0645\u06cc\u06ba \u0633\u06cc\u0634\u0646\u0632 \u06a9\u0648 \u0627\u0633\u0679\u0648\u0631 \u06a9\u0631\u06cc\u06ba \u062a\u0627\u06a9\u06c1 \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u0633\u0631\u0648\u0631 \u06a9\u0633\u06cc \u0628\u06be\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0648 \u0633\u0646\u0628\u06be\u0627\u0644 \u0633\u06a9\u06d2\u06d4<\/p>\n<pre><code class=\"language-env\">SESSION_DRIVER=redis\nCACHE_STORE=redis\nQUEUE_CONNECTION=redis\n<\/code><\/pre>\n<h3 id=\"heading-rate-limiting\">\u0631\u0641\u062a\u0627\u0631 \u06a9\u06cc \u062d\u062f<\/h3>\n<p>\u0634\u0631\u062d \u06a9\u0648 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u0646\u0627 \u0622\u067e \u06a9\u0648 \u0628\u062f\u0646\u06cc\u062a\u06cc \u067e\u0631 \u0645\u0628\u0646\u06cc \u06a9\u0644\u0627\u0626\u0646\u0679\u0633\u060c \u0628\u06be\u0627\u06af\u06d2 \u06c1\u0648\u0626\u06d2 \u0644\u0648\u067e\u0632\u060c \u0627\u0648\u0631 \u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u067e\u0648\u0627\u0626\u0646\u0679\u0633 \u06a9\u0648 \u0646\u0642\u0635\u0627\u0646 \u067e\u06c1\u0646\u0686\u0627\u0646\u06d2 \u0633\u06d2 \u0628\u0686\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-php\">use Illuminate\\Cache\\RateLimiting\\Limit;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\RateLimiter;\n\nRateLimiter::for('api', function (Request $request) {\n    return Limit::perMinute(120)->by(\n        optional(\\(request->user())->id ?: \\)request->ip()\n    );\n});\n<\/code><\/pre>\n<p>\u0645\u06c1\u0646\u06af\u06d2 \u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u0645\u0642\u0627\u0645\u0627\u062a \u06a9\u0648 \u0633\u062e\u062a \u062d\u062f\u0648\u062f \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-php\">RateLimiter::for('exports', function (Request $request) {\n    return Limit::perHour(10)->by($request->user()->id);\n});\n<\/code><\/pre>\n<p>\u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u0644\u0627\u06af\u062a \u06a9\u0648 \u0646\u0645\u0628\u0631\u0648\u06ba \u06a9\u0648 \u0686\u0644\u0627\u0646\u06d2 \u062f\u06cc\u06ba\u06d4 \u0644\u0627\u06af \u0627\u0646\u060c \u062a\u0644\u0627\u0634\u060c \u0628\u0631\u0622\u0645\u062f\u060c \u0627\u0648\u0631 \u0648\u06cc\u0628 \u06c1\u06a9 \u0627\u06cc\u0646\u0688 \u067e\u0648\u0627\u0626\u0646\u0679\u0633 \u06a9\u0648 \u0634\u0627\u0630 \u0648 \u0646\u0627\u062f\u0631 \u06c1\u06cc \u0627\u06cc\u06a9 \u062c\u06cc\u0633\u06cc \u067e\u0627\u0628\u0646\u062f\u06cc\u0648\u06ba \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-queues\">\u062f\u0645<\/h3>\n<p>Redis \u0627\u06cc\u06a9 \u0639\u0627\u0645 \u0642\u0637\u0627\u0631 \u0645\u06cc\u06ba \u06a9\u06be\u0691\u0627 \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06cc\u06c1 \u062a\u06cc\u0632 \u06c1\u06d2 \u0627\u0648\u0631 Horizon \u0627\u0633\u06d2 \u0627\u0686\u06be\u06cc \u0637\u0631\u062d \u0633\u067e\u0648\u0631\u0679 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-env\">QUEUE_CONNECTION=redis\n<\/code><\/pre>\n<p>\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0633\u06d2 \u0646\u0627\u0645\u0632\u062f \u0642\u0637\u0627\u0631 \u0645\u06cc\u06ba \u0628\u06be\u06cc\u062c\u0646\u06d2 \u06a9\u0627 \u06a9\u0627\u0645\u06d4<\/p>\n<pre><code class=\"language-php\">GenerateInvoicePdf::dispatch($invoice->id)\n    ->onQueue('documents');\n<\/code><\/pre>\n<p>\u067e\u0631\u0648\u0641\u0627\u0626\u0644\u0632 \u06a9\u06d2 \u0644\u062d\u0627\u0638 \u0633\u06d2 \u0627\u067e\u0646\u06d2 \u06a9\u0627\u0645 \u06a9\u0648 \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0631\u06cc\u06ba: <code>default<\/code>, <code>emails<\/code>, <code>webhooks<\/code>, <code>documents<\/code>\u0627\u0648\u0631 <code>imports<\/code>\u0627\u0633 \u06a9\u06cc \u0648\u062c\u06c1 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u06c1\u0631 \u06a9\u0627\u0645 \u06a9\u06d2 \u0628\u0648\u062c\u06be \u06a9\u0648 \u06a9\u0627\u0631\u06a9\u0646\u0648\u06ba \u06a9\u06cc \u0645\u062e\u062a\u0644\u0641 \u062a\u0639\u062f\u0627\u062f \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u067e\u0691\u0633\u06a9\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u0642\u0648\u0627\u0639\u062f \u06a9\u06cc \u062f\u0648\u0628\u0627\u0631\u06c1 \u06a9\u0648\u0634\u0634 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u067e\u0646\u0627 \u0646\u0627\u0645 \u0628\u0627\u0645\u0639\u0646\u06cc \u0631\u06a9\u06be\u06cc\u06ba\u06d4 \u0627\u06cc\u06a9 \u0648\u0627\u0642\u0639\u06d2 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646\u060c &quot;\u062f\u0633\u062a\u0627\u0648\u06cc\u0632 \u06a9\u06cc \u0642\u0637\u0627\u0631 20 \u0645\u0646\u0679 \u0644\u06cc\u0679 \u06c1\u06d2&#8221; \u0622\u067e \u06a9\u0648 &quot;\u0688\u06cc\u0641\u0627\u0644\u0679 \u0633\u0633\u062a \u06c1\u06d2&#8221; \u0633\u06d2 \u06a9\u06c1\u06cc\u06ba \u0632\u06cc\u0627\u062f\u06c1 \u0628\u062a\u0627\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-how-to-use-queue-driven-architectures\">\u0642\u0637\u0627\u0631 \u067e\u0631 \u0645\u0628\u0646\u06cc \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0633\u06d2 \u06a9\u0631\u06cc\u06ba\u06d4<\/h2>\n<p>\u0642\u0637\u0627\u0631\u06cc\u06ba Laravel \u06a9\u06d2 \u0628\u06c1\u062a\u0631\u06cc\u0646 \u0627\u0633\u06a9\u06cc\u0644\u0646\u06af \u0679\u0648\u0644\u0632 \u0645\u06cc\u06ba \u0633\u06d2 \u0627\u06cc\u06a9 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0622\u067e \u06a9\u06cc \u0627\u06cc\u067e \u06a9\u0648 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u062a\u06cc\u0632\u06cc \u0633\u06d2 \u0642\u0628\u0648\u0644 \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 \u06a9\u0646\u0679\u0631\u0648\u0644 \u0634\u062f\u06c1 \u06c1\u0645 \u0622\u06c1\u0646\u06af\u06cc \u06a9\u06d2 \u0633\u0627\u062a\u06be \u063a\u06cc\u0631 \u0645\u0637\u0627\u0628\u0642\u062a \u067e\u0630\u06cc\u0631 \u0637\u0648\u0631 \u067e\u0631 \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc \u06a9\u0631\u0646\u06d2 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0646\u0638\u0627\u0645 \u06a9\u0648 \u0645\u0632\u06cc\u062f \u0644\u0686\u06a9\u062f\u0627\u0631 \u0628\u06be\u06cc \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0641\u0631\u06cc\u0642 \u062b\u0627\u0644\u062b \u06a9\u0627 API \u0646\u06cc\u0686\u06d2 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0622\u067e\u0631\u06cc\u0634\u0646 PHP-FPM \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0627\u0631\u06a9\u0646 \u06a9\u0648 \u0628\u0627\u0646\u062f\u06be\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u062e\u0648\u062f \u062f\u0648\u0628\u0627\u0631\u06c1 \u06a9\u0648\u0634\u0634 \u06a9\u0631\u06d2 \u06af\u0627\u06d4<\/p>\n<h3 id=\"heading-laravel-queues\">\u0644\u0627\u0631\u06cc\u0648\u0644 \u0642\u0637\u0627\u0631<\/h3>\n<p>\u0627\u0686\u06be\u06d2 \u0622\u067e\u0631\u06cc\u0634\u0646\u0632 \u0686\u06be\u0648\u0679\u06d2\u060c \u06a9\u0645\u0632\u0648\u0631 \u0627\u0648\u0631 \u062f\u0648\u0628\u0627\u0631\u06c1 \u06a9\u0648\u0634\u0634 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062d\u0641\u0648\u0638 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-php\">use App\\Mail\\OrderReceiptMail;\nuse App\\Models\\Order;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Foundation\\Queue\\Queueable;\nuse Illuminate\\Support\\Facades\\Mail;\n\nclass SendOrderReceipt implements ShouldQueue\n{\n    use Queueable;\n\n    public int $tries = 3;\n    public int $backoff = 60;\n\n    public function __construct(public int $orderId)\n    {\n    }\n\n    public function handle(): void\n    {\n        \\(order = Order::with('user')->findOrFail(\\)this->orderId);\n\n        Mail::to(\\(order->user)->send(new OrderReceiptMail(\\)order));\n    }\n}\n<\/code><\/pre>\n<p>\u067e\u0648\u0631\u06d2 Eloquent \u0645\u0627\u0688\u0644 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0679\u0627\u0633\u06a9 \u06a9\u06d2 \u0644\u06cc\u06d2 ID \u067e\u0627\u0633 \u06a9\u0631\u06cc\u06ba\u06d4 \u0679\u0627\u0633\u06a9 \u0686\u0644\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0645\u0627\u0688\u0644 \u062a\u0628\u062f\u06cc\u0644 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u067e\u0648\u0631\u06d2 \u0645\u0627\u0688\u0644 \u06a9\u0648 \u0633\u06cc\u0631\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0646\u062a\u06cc\u062c\u06d2 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0628\u0691\u0627 \u067e\u06d2 \u0644\u0648\u0688 \u06c1\u0648 \u06af\u0627\u06d4 \u0628\u06cc\u0631\u0648\u0646\u06cc APIs \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0679\u0627\u0626\u0645 \u0622\u0624\u0679 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u0688\u067e\u0644\u06cc\u06a9\u06cc\u0679 \u06a9\u0627\u0645 \u0633\u06d2 \u0628\u0686\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-php\">use App\\Models\\Order;\nuse App\\Services\\CrmClient;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Foundation\\Queue\\Queueable;\n\nclass SyncOrderToCrm implements ShouldQueue\n{\n    use Queueable;\n\n    public int $tries = 3;\n    public int $backoff = 60;\n\n    public function __construct(public int $orderId)\n    {\n    }\n\n    public function handle(CrmClient $crm): void\n    {\n        \\(order = Order::findOrFail(\\)this->orderId);\n\n        if ($order->crm_synced_at) {\n            return;\n        }\n\n        \\(crm->upsertOrder(\\)order->external_reference, [\n            'total' => $order->total,\n            'status' => $order->status,\n        ]);\n\n        $order->forceFill(['crm_synced_at' => now()])->save();\n    }\n}\n<\/code><\/pre>\n<p>\u06a9\u06c1 <code>crm_synced_at<\/code> \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0644\u06cc\u062f \u06c1\u06d2\u06d4 \u0622\u067e\u0631\u06cc\u0634\u0646\u0632 \u06a9\u0648 \u062d\u0642\u06cc\u0642\u06cc \u0632\u0646\u062f\u06af\u06cc \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0628\u0627\u0631 \u0627\u0646\u062c\u0627\u0645 \u062f\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0622\u0626\u06cc\u0688\u06cc\u0645\u067e\u0648\u0679\u06cc\u0646\u0633\u06cc \u0627\u06cc\u0633\u06cc \u06c1\u06d2 \u06a9\u06c1 \u062f\u0648\u0628\u0627\u0631\u06c1 \u06a9\u0648\u0634\u0634\u06cc\u06ba \u0688\u0628\u0644 \u0628\u0644\u0646\u06af \u06cc\u0627 \u0688\u0628\u0644 \u200b\u200b\u0633\u0646\u06a9\u0631\u0648\u0646\u0627\u0626\u0632\u06cc\u0634\u0646 \u06a9\u0648 \u0631\u0648\u06a9\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-horizon\">\u0627\u0641\u0642<\/h3>\n<p>Horizon \u0631\u06cc\u0688\u06cc\u0633 \u0642\u0637\u0627\u0631\u0648\u06ba \u067e\u0631 \u0645\u0631\u0626\u06cc\u062a \u0627\u0648\u0631 \u06a9\u0646\u0679\u0631\u0648\u0644 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0639\u0627\u0645 \u0633\u06cc\u0679 \u0627\u067e \u0645\u062e\u062a\u0644\u0641 \u06a9\u0627\u0645 \u06a9\u06d2 \u0628\u0648\u062c\u06be \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062e\u062a\u0644\u0641 \u0633\u067e\u0631\u0648\u0627\u0626\u0632\u0631 \u0686\u0644\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-php\">'production' => [\n    'supervisor-default' => [\n        'connection' => 'redis',\n        'queue' => ['default', 'emails'],\n        'balance' => 'auto',\n        'maxProcesses' => 20,\n        'tries' => 3,\n    ],\n\n    'supervisor-documents' => [\n        'connection' => 'redis',\n        'queue' => ['documents'],\n        'balance' => 'simple',\n        'maxProcesses' => 5,\n        'tries' => 2,\n        'timeout' => 300,\n    ],\n],\n<\/code><\/pre>\n<p>\u0639\u0644\u06cc\u062d\u062f\u06af\u06cc \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2\u06d4 \u0637\u0648\u06cc\u0644 \u0639\u0631\u0635\u06d2 \u0633\u06d2 \u0686\u0644\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u062f\u0633\u062a\u0627\u0648\u06cc\u0632\u06cc \u06a9\u0627\u0645\u0648\u06ba \u0633\u06d2 \u0622\u067e \u06a9\u0648 \u0641\u0648\u0631\u06cc \u067e\u0627\u0633 \u0648\u0631\u0688 \u062f\u0648\u0628\u0627\u0631\u06c1 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u0646\u06d2 \u0648\u0627\u0644\u06cc \u0627\u06cc \u0645\u06cc\u0644\u0632 \u062e\u062a\u0645 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u0646\u06d2 \u0686\u0627\u06c1\u0626\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-failed-jobs-and-retries\">\u0646\u0627\u06a9\u0627\u0645 \u0622\u067e\u0631\u06cc\u0634\u0646\u0632 \u0627\u0648\u0631 \u062f\u0648\u0628\u0627\u0631\u06c1 \u06a9\u0648\u0634\u0634\u06cc\u06ba\u06d4<\/h3>\n<p>\u062f\u0648\u0628\u0627\u0631\u06c1 \u06a9\u0648\u0634\u0634 \u0635\u0631\u0641 \u0627\u0633 \u0635\u0648\u0631\u062a \u0645\u06cc\u06ba \u0645\u062f\u062f \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u062c\u0628 \u0646\u0627\u06a9\u0627\u0645\u06cc \u0639\u0627\u0631\u0636\u06cc \u06c1\u0648\u06d4 \u0645\u0633\u062a\u0642\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0631\u0648\u06a9\u06d2 \u06af\u0626\u06d2 \u0622\u067e\u0631\u06cc\u0634\u0646 \u06a9\u06cc \u062f\u0648\u0628\u0627\u0631\u06c1 \u06a9\u0648\u0634\u0634 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u0635\u0644\u0627\u062d\u06cc\u062a \u062e\u062a\u0645 \u06c1\u0648\u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4 \u06a9\u0627\u0631\u0648\u0628\u0627\u0631 \u06a9\u06cc \u0622\u062e\u0631\u06cc \u062a\u0627\u0631\u06cc\u062e \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u0627\u0645\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba: <code>retryUntil<\/code>:<\/p>\n<pre><code class=\"language-php\">use DateTime;\nuse Throwable;\n\npublic function retryUntil(): DateTime\n{\n    return now()->addMinutes(30);\n}\n\npublic function failed(Throwable $exception): void\n{\n    ImportBatch::whereKey($this->batchId)->update([\n        'status' => 'failed',\n        'failed_reason' => $exception->getMessage(),\n    ]);\n}\n<\/code><\/pre>\n<p>\u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba <code>failed<\/code> \u0627\u0633 \u0645\u0633\u0626\u0644\u06d2 \u06a9\u0648 \u0646\u0634\u0627\u0646 \u0632\u062f \u06a9\u0631\u06cc\u06ba \u062c\u06c1\u0627\u06ba \u0644\u0648\u06af \u0627\u0633\u06d2 \u062f\u06cc\u06a9\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0622\u067e \u062c\u0648 \u06a9\u0686\u06be \u0628\u06be\u06cc \u06a9\u0631\u06cc\u06ba\u060c \u062a\u06cc\u0633\u0631\u06d2 \u0641\u0631\u06cc\u0642 \u06a9\u06cc \u062e\u062f\u0645\u0627\u062a \u062a\u06a9 \u067e\u06c1\u0646\u0686\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0622\u067e\u0631\u06cc\u0634\u0646\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0644\u0627\u0645\u062d\u062f\u0648\u062f \u062f\u0648\u0628\u0627\u0631\u06c1 \u06a9\u0648\u0634\u0634\u06cc\u06ba \u0645\u062a \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-queue-monitoring\">\u0642\u0637\u0627\u0631 \u06a9\u06cc \u0646\u06af\u0631\u0627\u0646\u06cc<\/h3>\n<p>\u0642\u0637\u0627\u0631 \u06a9\u06cc \u06af\u06c1\u0631\u0627\u0626\u06cc\u060c \u0627\u0646\u062a\u0638\u0627\u0631 \u06a9\u0627 \u0648\u0642\u062a\u060c \u0646\u0627\u06a9\u0627\u0645\u06cc \u06a9\u06cc \u0634\u0631\u062d\u060c \u0627\u0648\u0631 \u067e\u0631\u0648\u0633\u06cc\u0633\u0646\u06af \u06a9\u0627 \u0648\u0642\u062a \u0627\u06cc\u06a9 \u0633\u0627\u062a\u06be \u0679\u0631\u06cc\u06a9 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06a9\u06cc\u0644\u06d2 \u06af\u06c1\u0631\u0627\u0626\u06cc \u0622\u067e \u06a9\u0648 \u06af\u0645\u0631\u0627\u06c1 \u06a9\u0631 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4 \u062c\u06cc\u0633\u0627 \u06a9\u06c1 \u0622\u067e \u06af\u06c1\u0631\u0627\u0626\u06cc \u062d\u0627\u0635\u0644 \u06a9\u0631\u0646\u0627 \u0634\u0631\u0648\u0639 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0645\u0646\u0638\u0645 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u062f\u06cc\u06a9\u06be\u06cc\u06ba. \u06a9\u06cc\u0627 \u0622\u067e \u06a9\u06d2 \u06a9\u0627\u0631\u06a9\u0646\u0627\u0646 \u0622\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06a9\u0627\u0645 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0631\u0641\u062a\u0627\u0631 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u06d2 \u06c1\u0648\u0626\u06d2 \u06c1\u06cc\u06ba\u061f \u0627\u06af\u0631 \u0642\u0637\u0627\u0631 \u0628\u0691\u06be\u062a\u06cc \u0631\u06c1\u062a\u06cc \u06c1\u06d2 \u062a\u0648 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0627\u0646\u0641\u0631\u0627\u062f\u06cc \u06a9\u0627\u0645\u0648\u06ba \u0645\u06cc\u06ba \u06a9\u062a\u0646\u0627 \u0648\u0642\u062a \u0644\u06af\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0633\u0633\u062a \u062d\u0635\u06c1 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06c1\u06d2 \u062a\u0648 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u0645\u06cc\u06ba \u062a\u0631\u0645\u06cc\u0645 \u06a9\u0631\u06cc\u06ba \u06cc\u0627 \u0648\u0631\u06a9\u0631 \u06a9\u0646\u06a9\u0631\u0646\u0633\u06cc \u06a9\u0648 \u0688\u0627\u0626\u0644 \u0628\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u06cc\u06c1 \u0627\u06cc\u06a9 \u0628\u06cc\u0631\u0648\u0646\u06cc API \u06c1\u06d2 \u062a\u0648 \u0628\u06cc\u06a9 \u0622\u0641 \u06cc\u0627 \u0633\u0631\u06a9\u0679 \u0628\u0631\u06cc\u06a9\u0631 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u0622\u067e \u06a9\u0627 \u06a9\u0627\u0645 \u0633\u06cc \u067e\u06cc \u06cc\u0648 \u0633\u06d2 \u0645\u0646\u0633\u0644\u06a9 \u06c1\u06d2\u060c \u062a\u0648 \u06a9\u0627\u0631\u06a9\u0646\u0648\u06ba \u06a9\u06cc \u067e\u06cc\u0645\u0627\u0626\u0634 \u06a9\u0631\u06cc\u06ba \u06cc\u0627 \u06a9\u0627\u0645 \u06a9\u0648 \u0686\u06be\u0648\u0679\u06d2 \u0679\u06a9\u0691\u0648\u06ba \u0645\u06cc\u06ba \u062a\u0648\u0691 \u062f\u06cc\u06ba\u06d4<\/p>\n<p>\u0644\u06cc\u06a9\u0646 \u0627\u067e\u0646\u06cc &quot;\u067e\u06cc\u0645\u0627\u0646\u06c1 \u06a9\u0627\u0631\u06a9\u0646&#8221; \u062c\u0628\u0644\u062a\u0648\u06ba \u0633\u06d2 \u06c1\u0648\u0634\u06cc\u0627\u0631 \u0631\u06c1\u06cc\u06ba\u06d4 \u067e\u06c1\u0644\u06d2 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u06cc\u06d2 \u0628\u063a\u06cc\u0631 \u06a9\u0627\u0631\u06a9\u0646\u0648\u06ba \u06a9\u0648 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u0627 \u0648\u0627\u0642\u0639\u0627\u062a \u06a9\u0648 \u0645\u0632\u06cc\u062f \u062e\u0631\u0627\u0628 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u0632\u06cc\u0627\u062f\u06c1 \u06a9\u0627\u0631\u06a9\u0646\u0627\u0646 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u06c1\u0645 \u0622\u06c1\u0646\u06af\u06cc \u06a9\u06d2 \u0633\u0648\u0627\u0644\u0627\u062a\u060c \u0632\u06cc\u0627\u062f\u06c1 \u0644\u0627\u06a9\u0646\u06af\u060c \u0627\u0648\u0631 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u062c\u062f\u0648\u062c\u06c1\u062f \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u067e\u0631 \u0632\u06cc\u0627\u062f\u06c1 \u062f\u0628\u0627\u0624\u06d4<\/p>\n<h2 id=\"heading-how-to-optimize-api-performance\">API \u06a9\u06cc \u06a9\u0627\u0631\u06a9\u0631\u062f\u06af\u06cc \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u0628\u06c1\u062a\u0631 \u0628\u0646\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/h2>\n<p>APIs \u062e\u0627\u0635 \u062f\u0644\u0686\u0633\u067e\u06cc \u06a9\u06d2 \u062d\u0627\u0645\u0644 \u06c1\u06cc\u06ba \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06a9\u0644\u0627\u0626\u0646\u0679 \u0627\u0646\u06c1\u06cc\u06ba \u0628\u0627\u0631 \u0628\u0627\u0631 \u06a9\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0646 \u06a9\u06d2 \u067e\u06d2 \u0644\u0648\u0688\u0632 \u06a9\u0626\u06cc \u0645\u06c1\u06cc\u0646\u0648\u06ba \u0645\u06cc\u06ba \u062e\u0627\u0645\u0648\u0634\u06cc \u0633\u06d2 \u0628\u0691\u06be\u062a\u06d2 \u0631\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-api-resources\">API \u0648\u0633\u0627\u0626\u0644<\/h3>\n<p>\u0648\u0633\u0627\u0626\u0644 \u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631 \u0627\u06cc\u06a9 \u0630\u0645\u06c1 \u062f\u0627\u0631 \u0634\u06a9\u0644 \u06a9\u0648 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-php\">class OrderResource extends JsonResource\n{\n    public function toArray($request): array\n    {\n        return [\n            'id' => $this->id,\n            'status' => $this->status,\n            'total' => $this->total,\n            'placed_at' => $this->created_at->toIso8601String(),\n            'customer' => new CustomerSummaryResource($this->whenLoaded('customer')),\n        ];\n    }\n}\n<\/code><\/pre>\n<p><code>whenLoaded<\/code>    \u06cc\u06c1\u0627\u06ba \u062d\u0642\u06cc\u0642\u06cc \u06a9\u0627\u0645 \u06c1\u0648 \u0631\u06c1\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0631\u0634\u062a\u06c1 \u0641\u0648\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0644\u0648\u0688 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0648\u0633\u0627\u0626\u0644 \u062e\u0627\u0645\u0648\u0634\u06cc \u0633\u06d2 \u0633\u0633\u062a \u0633\u0648\u0627\u0644\u0627\u062a \u06a9\u0648 \u0645\u062a\u062d\u0631\u06a9 \u06a9\u0631\u0646\u0627 \u0628\u0646\u062f \u06a9\u0631 \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-php\">$orders = Order::query()\n    ->with('customer:id,name')\n    ->where('account_id', $accountId)\n    ->latest()\n    ->paginate(50);\n\nreturn OrderResource::collection($orders);\n<\/code><\/pre>\n<p>\u0627\u06cc\u06a9 \u063a\u06cc\u0631 \u0645\u062d\u062f\u0648\u062f \u0645\u062c\u0645\u0648\u0639\u06c1 \u06a9\u0648 \u0648\u0627\u067e\u0633 \u06a9\u0631\u0646\u0627 API \u06a9\u0627\u0631\u06a9\u0631\u062f\u06af\u06cc \u06a9\u06d2 \u0645\u0633\u0627\u0626\u0644 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0627\u06cc\u06a9 \u0622\u0633\u0627\u0646 \u0637\u0631\u06cc\u0642\u06c1 \u06c1\u06d2 \u062c\u0648 \u0627\u0633 \u0648\u0642\u062a \u062a\u06a9 \u0645\u062d\u0633\u0648\u0633 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u06af\u0627 \u062c\u0628 \u062a\u06a9 \u06a9\u06c1 \u06a9\u0644\u0627\u0626\u0646\u0679 \u06a9\u06d2 \u067e\u0627\u0633 \u0628\u06c1\u062a \u0632\u06cc\u0627\u062f\u06c1 \u0688\u06cc\u0679\u0627 \u0646\u06c1 \u06c1\u0648\u06d4<\/p>\n<pre><code class=\"language-php\">$perPage = min((int) request('per_page', 50), 100);\n\n\\(orders = Order::where('account_id', \\)accountId)\n    ->latest()\n    ->paginate($perPage);\n<\/code><\/pre>\n<p>\u0635\u0641\u062d\u06c1 \u06a9\u0627 \u0633\u0627\u0626\u0632 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u06a9\u0644\u0627\u0626\u0646\u0679 \u06a9\u0648 \u0648\u0627\u0642\u0639\u06cc \u0628\u0631\u0622\u0645\u062f \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u0645\u0627\u0645 \u0631\u06cc\u06a9\u0627\u0631\u0688\u0632 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u060c \u062a\u0648 \u0627\u0633\u06d2 \u0628\u0691\u06d2 \u06c1\u0645 \u0648\u0642\u062a \u0633\u0627\u0632 \u062c\u0648\u0627\u0628 \u06a9\u06cc \u0628\u062c\u0627\u0626\u06d2 \u0627\u06cc\u06a9 \u063a\u06cc\u0631 \u0645\u0637\u0627\u0628\u0642\u062a \u067e\u0630\u06cc\u0631 \u0622\u067e\u0631\u06cc\u0634\u0646 \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-response-optimization\">\u0631\u0633\u067e\u0627\u0646\u0633 \u0622\u067e\u0679\u06cc\u0645\u0627\u0626\u0632\u06cc\u0634\u0646<\/h3>\n<p>\u0627\u0646 \u0641\u06cc\u0644\u0688\u0632 \u06a9\u0648 \u0648\u0627\u067e\u0633 \u06a9\u0631\u0646\u0627 \u0628\u0646\u062f \u06a9\u0631\u06cc\u06ba \u062c\u0646\u06c1\u06cc\u06ba \u06a9\u0648\u0626\u06cc \u0646\u06c1\u06cc\u06ba \u067e\u0691\u06be\u062a\u0627\u06d4 \u0631\u06cc\u0688 \u06c1\u06cc\u0648\u06cc \u0627\u06cc\u0646\u0688 \u067e\u0648\u0627\u0626\u0646\u0679\u0633 \u067e\u0631\u060c \u0635\u0631\u0641 \u0627\u0646 \u06a9\u0627\u0644\u0645\u0648\u06ba \u06a9\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631\u0646\u0627 \u062c\u0646 \u06a9\u06cc \u0622\u067e \u06a9\u0648 \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u060c \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 I\/O \u0627\u0648\u0631 \u0633\u06cc\u0631\u06cc\u0644\u0627\u0626\u0632\u06cc\u0634\u0646 \u06a9\u06d2 \u0627\u062e\u0631\u0627\u062c\u0627\u062a \u062f\u0648\u0646\u0648\u06ba \u06a9\u0648 \u06a9\u0645 \u06a9\u0631 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-php\">$products = Product::query()\n    ->select(['id', 'name', 'slug', 'price', 'thumbnail_url'])\n    ->where('is_visible', true)\n    ->orderBy('name')\n    ->paginate(40);\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0622\u067e \u06a9\u06d2 \u0648\u06cc\u0628 \u0633\u0631\u0648\u0631 \u06cc\u0627 \u0644\u0648\u0688 \u0628\u06cc\u0644\u0646\u0633\u0631 \u067e\u0631 \u06a9\u0645\u067e\u0631\u06cc\u0634\u0646 \u0622\u0646 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u0628\u06be\u06cc \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 JSON \u0628\u06c1\u062a \u0627\u0686\u06be\u06cc \u0637\u0631\u062d \u0633\u06d2 \u06a9\u0645\u067e\u0631\u06cc\u0633 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u06cc\u06c1 \u0627\u06a9\u062b\u0631 \u062d\u0642\u06cc\u0642\u06cc \u0628\u06cc\u0646\u0688\u0648\u062a\u06be \u0645\u0639\u0627\u0648\u0636\u06d2 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062a\u0631\u062a\u06cc\u0628 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0686\u06be\u0648\u0679\u06cc \u0633\u06cc \u062a\u0628\u062f\u06cc\u0644\u06cc \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-rate-limiting\">\u0631\u0641\u062a\u0627\u0631 \u06a9\u06cc \u062d\u062f<\/h3>\n<p>\u0634\u0646\u0627\u062e\u062a \u0627\u0648\u0631 \u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u0642\u06cc\u0645\u062a \u06a9\u06d2 \u0644\u06cc\u06d2 API \u06a9\u06cc \u0634\u0631\u062d \u06a9\u06cc \u062d\u062f\u06cc\u06ba \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-php\">Route::middleware(['auth:sanctum', 'throttle:api'])\n    ->group(function () {\n        Route::get('\/orders', [OrderController::class, 'index']);\n        Route::post('\/exports\/orders', [OrderExportController::class, 'store'])\n            ->middleware('throttle:exports');\n    });\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0645\u0639\u0645\u0648\u0644 \u06a9\u06cc \u062a\u0644\u0627\u0634\u0648\u06ba \u0627\u0648\u0631 \u0645\u06c1\u0646\u06af\u06cc \u0628\u0631\u0622\u0645\u062f\u0627\u062a \u06a9\u0648 \u0627\u0644\u06af \u0627\u0644\u06af \u067e\u0627\u0644\u06cc\u0633\u06cc\u0648\u06ba \u06a9\u06d2 \u062a\u062d\u062a \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06c1\u0630\u0627 \u0627\u06cc\u06a9 \u0628\u06be\u0627\u0631\u06cc \u0635\u0627\u0631\u0641 \u06c1\u0631 \u06a9\u0633\u06cc \u067e\u0631 \u062f\u0628\u0627\u0624 \u0646\u06c1\u06cc\u06ba \u0688\u0627\u0644 \u0633\u06a9\u062a\u0627\u06d4<\/p>\n<h3 id=\"heading-caching-api-responses\">API \u0631\u062f\u0639\u0645\u0644 \u06a9\u06cc\u0634\u0646\u06af<\/h3>\n<p>\u06a9\u06cc\u0634\u06d2 \u06a9\u06d2 \u062c\u0648\u0627\u0628\u0627\u062a \u062c\u0648 \u06a9\u0645\u067e\u06cc\u0648\u0679\u06cc\u0634\u0646\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0645\u06c1\u0646\u06af\u06d2 \u0627\u0648\u0631 \u0642\u062f\u0631\u06d2 \u067e\u0631\u0627\u0646\u06d2 \u06c1\u0648 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-php\">public function index(Request $request)\n{\n    \\(accountId = \\)request->user()->account_id;\n    \\(page = \\)request->integer('page', 1);\n\n    \\(cacheKey = \"api:accounts:{\\)accountId}:orders:v1:page:{$page}\";\n\n    return Cache::remember(\\(cacheKey, now()->addSeconds(60), function () use (\\)accountId) {\n        return OrderResource::collection(\n            Order::with('customer:id,name')\n                ->where('account_id', $accountId)\n                ->latest()\n                ->paginate(50)\n        )->response()->getData(true);\n    });\n}\n<\/code><\/pre>\n<p>\u062a\u0648\u062c\u06c1 \u0641\u0631\u0645\u0627\u0626\u06cc\u06ba <code>v1<\/code> \u0686\u0627\u0628\u06cc \u067e\u0631\u06d4 \u0627\u0633 \u0648\u0631\u0698\u0646 \u0646\u0645\u0628\u0631 \u06a9\u0648 \u0679\u06a9\u0631\u0627\u0646\u06d2 \u0633\u06d2\u060c \u062c\u0628 \u0622\u067e \u0638\u0627\u06c1\u0631\u06cc \u0634\u06a9\u0644 \u0628\u062f\u0644\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0648 \u0622\u067e \u067e\u0648\u0631\u06d2 \u062c\u0648\u0627\u0628\u06cc \u0641\u0627\u0631\u0645\u06cc\u0679 \u06a9\u0648 \u0627\u06cc\u06a9 \u0633\u0627\u062a\u06be \u0628\u0627\u0637\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u06cc\u0633\u06cc \u0627\u0634\u06cc\u0627\u0621 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062c\u0648 \u0648\u0627\u0642\u0639\u06cc \u0639\u0627\u0644\u0645\u06cc \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u060c \u06c1\u0645\u06cc\u0634\u06c1 \u06a9\u0631\u0627\u06cc\u06c1 \u062f\u0627\u0631 \u06cc\u0627 \u0635\u0627\u0631\u0641 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0644\u06cc\u062f \u06a9\u0627 \u062f\u0627\u0626\u0631\u06c1 \u06a9\u0627\u0631 \u0631\u06a9\u06be\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-how-to-monitor-laravel-in-production\">\u067e\u06cc\u062f\u0627\u0648\u0627\u0631 \u0645\u06cc\u06ba \u0644\u0627\u0631\u06cc\u0648\u0644 \u06a9\u06cc \u0646\u06af\u0631\u0627\u0646\u06cc \u06a9\u06cc\u0633\u06d2 \u06a9\u0631\u06cc\u06ba\u06d4<\/h2>\n<p>\u0648\u06c1 \u0679\u06cc\u0645\u06cc\u06ba \u062c\u0648 \u0635\u0627\u0631\u0641\u06cc\u0646 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0645\u0633\u0627\u0626\u0644 \u06a9\u06cc \u0646\u0634\u0627\u0646\u062f\u06c1\u06cc \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba \u0648\u06c1\u06cc \u06c1\u06cc\u06ba \u062c\u0648 \u06c1\u0631 \u062c\u06af\u06c1 \u0633\u06d2 \u0633\u06af\u0646\u0644 \u062c\u0645\u0639 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba: Laravel\u060c \u0642\u0637\u0627\u0631\u06cc\u06ba\u060c \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633\u060c Redis\u060c \u0627\u0646\u0641\u0631\u0627\u0633\u0679\u0631\u06a9\u0686\u0631\u060c \u0627\u0648\u0631 \u0628\u06cc\u0631\u0648\u0646\u06cc \u062e\u062f\u0645\u0627\u062a\u06d4<\/p>\n<p>Laravel \u06a9\u0686\u06be \u0627\u0686\u06be\u06d2 \u0627\u0628\u062a\u062f\u0627\u0626\u06cc \u0646\u06a9\u0627\u062a \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 Horizon \u0642\u0637\u0627\u0631 \u06a9\u06d2 \u062a\u06be\u0631\u0648 \u067e\u0679\u060c \u0646\u0627\u06a9\u0627\u0645 \u062c\u0627\u0628\u0632\u060c \u0644\u06cc\u0679\u0646\u0633\u06cc\u060c \u0627\u0648\u0631 \u0648\u0631\u06a9\u0631 \u0628\u06cc\u0644\u0646\u0633\u0646\u06af \u062f\u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0679\u06cc\u0644\u06cc \u0633\u06a9\u0648\u067e \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06cc \u062a\u0641\u0635\u06cc\u0644\u0627\u062a\u060c \u0633\u0648\u0627\u0644\u0627\u062a\u060c \u0627\u0633\u062a\u062b\u0646\u06cc\u0670\u060c \u06a9\u0627\u0645\u060c \u0645\u06cc\u0644\u060c \u0627\u0648\u0631 \u06a9\u06cc\u0634 \u0627\u06cc\u0648\u0646\u0679\u0633 \u062f\u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0644\u0627\u06af\u0632 \u0633\u0633\u062a \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc\u0648\u06ba\u060c \u063a\u06cc\u0631 \u0645\u062a\u0648\u0642\u0639 \u062f\u0648\u0628\u0627\u0631\u06c1 \u06a9\u0648\u0634\u0634\u0648\u06ba\u060c \u0627\u0648\u0631 \u0628\u06cc\u0631\u0648\u0646\u06cc \u062e\u0631\u0627\u0628\u06cc\u0648\u06ba \u06a9\u0648 \u067e\u06a9\u0691\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0645\u06cc\u0679\u0631\u06a9\u0633 \u0644\u06cc\u0679\u0646\u0633\u06cc\u060c \u0627\u06cc\u0631\u0631 \u0631\u06cc\u0679\u060c \u0642\u0637\u0627\u0631 \u06a9\u06cc \u06af\u06c1\u0631\u0627\u0626\u06cc\u060c \u0679\u0627\u0633\u06a9 \u0631\u0646 \u0679\u0627\u0626\u0645\u060c \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0633\u06cc \u067e\u06cc \u06cc\u0648\u060c \u0644\u0627\u06a9 \u0648\u06cc\u0679\u060c \u06a9\u06cc\u0634 \u06c1\u0679 \u0631\u06cc\u0679\u060c \u0627\u0648\u0631 \u0631\u06cc\u0688\u06cc\u0633 \u0645\u06cc\u0645\u0648\u0631\u06cc \u06a9\u0648 \u0679\u0631\u06cc\u06a9 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0622\u067e \u06a9\u0627 \u0627\u0646\u062a\u0628\u0627\u06c1 \u0627\u0646 \u0633\u0628 \u06a9\u0648 \u0627\u0633 \u0633\u06d2 \u062c\u0648\u0691\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0622\u067e \u06a9\u06d2 \u06af\u0627\u06c1\u06a9 \u0627\u0635\u0644 \u0645\u06cc\u06ba \u06a9\u06cc\u0627 \u0645\u062d\u0633\u0648\u0633 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0648\u06c1 \u0622\u062e\u0631\u06cc \u062d\u0635\u06c1 \u06c1\u06d2 \u062c\u06c1\u0627\u06ba \u0679\u06cc\u0645\u06cc\u06ba \u0627\u06a9\u062b\u0631 \u063a\u0644\u0637\u06cc\u0627\u06ba \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0628\u06c1\u062a\u0631\u06cc\u0646 \u0627\u0646\u062a\u0628\u0627\u06c1 \u0639\u0644\u0627\u0645\u0627\u062a \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u06c1\u06cc\u06ba\u060c \u0646\u06c1 \u06a9\u06c1 \u0622\u067e \u06a9\u06d2 \u06a9\u0645\u067e\u06cc\u0648\u0679\u0631 \u06a9\u06d2 \u0645\u0635\u0631\u0648\u0641 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba\u06d4 p95 API \u0644\u06cc\u0679\u0646\u0633\u06cc 10 \u0645\u0646\u0679 \u06a9\u06d2 \u0644\u06cc\u06d2 800ms \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1\u060c \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u06cc \u063a\u0644\u0637\u06cc \u06a9\u06cc \u0634\u0631\u062d 1% \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1\u060c \u0627\u06cc \u0645\u06cc\u0644 \u0642\u0637\u0627\u0631 5 \u0645\u0646\u0679 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0627\u0646\u062a\u0638\u0627\u0631\u060c \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 CPU 85% \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u06cc \u0648\u062c\u06c1 \u0633\u06d2\u060c Redis \u0645\u06cc\u0645\u0648\u0631\u06cc 80% \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1\u060c \u06cc\u0627 \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06a9\u0627 \u0648\u06cc\u0628 \u06c1\u06a9 \u062d\u062f \u0633\u06d2 \u062a\u062c\u0627\u0648\u0632 \u06a9\u0631\u0646\u06d2 \u0645\u06cc\u06ba \u0646\u0627\u06a9\u0627\u0645\u06d4<\/p>\n<p>\u06a9\u0686\u06be \u0645\u0641\u06cc\u062f \u0630\u06c1\u0646\u06cc \u0645\u0627\u0688\u0644\u0632 \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba: \u0644\u0627\u06af\u0632 \u0622\u067e \u06a9\u0648 \u0628\u062a\u0627\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u06a9\u06cc\u0627 \u06c1\u0648\u0627\u060c \u0645\u06cc\u0679\u0631\u06a9\u0633 \u0622\u067e \u06a9\u0648 \u0628\u062a\u0627\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0622\u06cc\u0627 \u0646\u0638\u0627\u0645 \u0635\u062d\u062a \u0645\u0646\u062f \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0646\u0634\u0627\u0646\u0627\u062a \u0622\u067e \u06a9\u0648 \u0628\u062a\u0627\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0648\u0642\u062a \u06a9\u06c1\u0627\u06ba \u06af\u06cc\u0627\u06d4 \u062f\u0631\u062d\u0642\u06cc\u0642\u062a\u060c \u0645\u06c1\u0646\u06af\u06d2 \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u062a\u06be\u0648\u0691\u0627 \u0633\u0627 \u0622\u0644\u0627\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0633\u0645\u06cc\u0679\u0646\u06d2 \u0633\u06d2 \u062c\u0644\u062f \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u06c1\u0648 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-php\">use Illuminate\\Support\\Facades\\Log;\n\n$startedAt = microtime(true);\n\n\\(report = \\)builder->forAccount($account)->build();\n\nLog::info('Billing report generated', [\n    'account_id' => $account->id,\n    'duration_ms' => (int) ((microtime(true) - $startedAt) * 1000),\n    'invoice_count' => $report->invoiceCount(),\n]);\n<\/code><\/pre>\n<p>\u0627\u06af\u0631 \u0645\u0633\u0626\u0644\u06c1 \u0635\u0628\u062d 2 \u0628\u062c\u06d2 \u067e\u06cc\u0634 \u0622\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0627\u0633 \u0637\u0631\u062d \u06a9\u06cc \u0644\u0627\u06af \u0644\u0627\u0626\u0646 \u0622\u067e \u06a9\u0648 \u06cc\u06c1 \u062c\u0627\u0646\u0646\u06d2 \u0645\u06cc\u06ba \u0645\u062f\u062f \u06a9\u0631\u06d2 \u06af\u06cc \u06a9\u06c1 \u06a9\u0648\u0646 \u0633\u0627 \u0627\u06a9\u0627\u0624\u0646\u0679\u060c \u062f\u0631\u0622\u0645\u062f\u060c \u06cc\u0627 \u0631\u067e\u0648\u0631\u0679 \u0645\u0633\u0626\u0644\u06c1 \u06a9\u0627 \u0628\u0627\u0639\u062b \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u0627\u06cc\u06a9 \u0627\u0648\u0631 \u0686\u06cc\u0632 \u062a\u0627\u062e\u06cc\u0631 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0633\u0627\u062a\u06be \u062a\u06be\u0631\u0648 \u067e\u0679 \u06a9\u06cc \u0646\u06af\u0631\u0627\u0646\u06cc \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0642\u0637\u0627\u0631 \u0641\u06cc \u0645\u0646\u0679 \u06c1\u0632\u0627\u0631\u0648\u06ba \u0645\u0644\u0627\u0632\u0645\u062a\u0648\u06ba \u06a9\u0648 \u0633\u0646\u0628\u06be\u0627\u0644 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u06cc\u06c1 \u0627\u0628 \u0628\u06be\u06cc \u0628\u06d2 \u062a\u0631\u062a\u06cc\u0628 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0627\u06af\u0631 \u0627\u06c1\u0645 \u0645\u0644\u0627\u0632\u0645\u062a\u06cc\u06ba \u0634\u0631\u0648\u0639 \u06c1\u0648\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0628\u06c1\u062a \u0632\u06cc\u0627\u062f\u06c1 \u0627\u0646\u062a\u0638\u0627\u0631 \u06a9\u0631\u06cc\u06ba\u06d4 \u0635\u0627\u0631\u0641\u06cc\u0646 \u0627\u0646\u062a\u0638\u0627\u0631 \u0645\u062d\u0633\u0648\u0633 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u06be\u0631\u0648 \u067e\u0679 \u0646\u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-an-example-high-traffic-laravel-architecture\">\u06c1\u0627\u0626\u06cc \u0679\u0631\u06cc\u0641\u06a9 \u0644\u0627\u0631\u06cc\u0648\u0644 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u06a9\u06cc \u0645\u062b\u0627\u0644<\/h2>\n<p>\u06c1\u0627\u0626\u06cc \u0679\u0631\u06cc\u0641\u06a9 \u0644\u0627\u0631\u06cc\u0648\u0644 \u0633\u06cc\u0679 \u0627\u067e \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0686\u0627\u0631 \u0686\u06cc\u0632\u0648\u06ba \u06a9\u0648 \u0627\u0644\u06af \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba: \u0627\u0633\u0679\u06cc\u0679 \u0644\u06cc\u0633 \u0648\u06cc\u0628 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc\u06ba\u060c \u0645\u0634\u062a\u0631\u06a9\u06c1 \u06a9\u06cc\u0634\u06d2 \u0627\u0648\u0631 \u0633\u06cc\u0634\u0646 \u0627\u0633\u0679\u0648\u0631\u06cc\u062c\u060c \u063a\u06cc\u0631 \u0645\u0637\u0627\u0628\u0642\u062a \u067e\u0630\u06cc\u0631 \u06a9\u0627\u0631\u06a9\u0646\u0627\u0646\u060c \u0627\u0648\u0631 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u06d2 \u06a9\u0631\u062f\u0627\u0631\u06d4<\/p>\n<p>\u0622\u067e \u0644\u0648\u0688 \u0628\u06cc\u0644\u0646\u0633\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u0679\u0631\u06cc\u0641\u06a9 \u06a9\u0648 \u0627\u0633\u0679\u06cc\u0679 \u0644\u06cc\u0633 \u0644\u0627\u0631\u06cc\u0648\u0644 \u0627\u06cc\u067e \u0633\u0631\u0648\u0631\u0632 \u067e\u0631 \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0648\u06c1 \u0633\u0631\u0648\u0631\u0632 \u06a9\u06cc\u0634\u06d2\u060c \u0633\u06cc\u0634\u0646\u0632\u060c \u0631\u06cc\u0679 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u0646\u06d2\u060c \u0642\u0637\u0627\u0631\u0648\u06ba \u0627\u0648\u0631 \u06c1\u0648\u0631\u0627\u0626\u0632\u0646 \u0688\u06cc\u0679\u0627 \u06a9\u06d2 \u0644\u06cc\u06d2 Redis \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0642\u0637\u0627\u0631 \u0645\u06cc\u06ba \u06a9\u06be\u0691\u06d2 \u06a9\u0627\u0631\u06a9\u0646 \u0627\u0644\u06af \u0633\u06d2 \u0633\u0633\u062a \u06cc\u0627 \u0646\u0627\u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0628\u0627\u0631 \u06a9\u0627\u0645\u0648\u06ba \u067e\u0631 \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 MySQL \u067e\u0631\u0627\u0626\u0645\u0631\u06cc \u0646\u0642\u0644\u06cc\u06ba \u062a\u0645\u0627\u0645 \u062a\u062d\u0631\u06cc\u0631\u06cc\u06ba \u0627\u0648\u0631 \u0645\u0633\u062a\u0642\u0644 \u0645\u0632\u0627\u062c\u06cc \u0633\u06d2 \u062d\u0633\u0627\u0633 \u067e\u0691\u06be\u0646\u06d2 \u06a9\u0648 \u0627\u0646\u062c\u0627\u0645 \u062f\u06cc\u062a\u06cc \u06c1\u06cc\u06ba\u060c \u062c\u0628 \u06a9\u06c1 \u067e\u0691\u06be\u0646\u06d2 \u06a9\u06cc \u0646\u0642\u0644\u06cc\u06ba \u067e\u0691\u06be\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u0646\u0642\u0637\u0648\u06ba \u06a9\u0648 \u062c\u0630\u0628 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u060c \u062c\u0648 \u06a9\u0686\u06be \u0646\u0642\u0644 \u06a9\u06cc \u0648\u0642\u0641\u06d2 \u06a9\u0648 \u0628\u0631\u062f\u0627\u0634\u062a \u06a9\u0631 \u0633\u06a9\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0628\u06c1\u0627\u0624 \u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-text\">Users\n  -> Load balancer\n  -> Stateless Laravel app servers\n  -> Redis for cache, sessions, rate limits, queues, and Horizon data\n  -> Primary database for writes and consistency-sensitive reads\n  -> Read replica for safe read-heavy endpoints\n\nRedis queue\n  -> Queue workers\n  -> Database, external APIs, mail providers, object storage, and other services\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0648\u0627\u062d\u062f \u062f\u0631\u0633\u062a \u0634\u06a9\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 PostgreSQL MySQL \u06a9\u06cc \u062c\u06af\u06c1 \u0644\u06d2 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u060c Amazon SQS Redis \u06a9\u06cc \u0642\u0637\u0627\u0631\u0648\u06ba \u06a9\u06cc \u062c\u06af\u06c1 \u0644\u06d2 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u060c CDNs \u062c\u0627\u0645\u062f \u0627\u062b\u0627\u062b\u0648\u06ba \u0627\u0648\u0631 \u0639\u0648\u0627\u0645\u06cc \u0631\u062f\u0639\u0645\u0644 \u06a9\u0648 \u06a9\u06cc\u0634 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0635\u0627\u0631\u0641 \u06a9\u06d2 \u0627\u067e \u0644\u0648\u0688\u0632 \u06a9\u0648 \u0622\u0631\u06a9\u0627\u0626\u06cc\u0648 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0627\u0633\u0679\u0648\u0631\u06cc\u062c \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4 \u0627\u06c1\u0645 \u0627\u0635\u0648\u0644 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u06c1\u0631 \u067e\u0631\u062a \u06a9\u0627 \u0627\u06cc\u06a9 \u0648\u0627\u0636\u062d \u06a9\u0627\u0645 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633\u06d2 \u062e\u0648\u062f \u0628\u0691\u06be\u0627\u06cc\u0627 \u06cc\u0627 \u0688\u06be\u0627\u0644 \u0644\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633\u0679\u06cc\u0679 \u0644\u06cc\u0633 \u0627\u06cc\u067e \u0633\u0631\u0648\u0631 \u06a9\u0627 \u0645\u0646\u0641\u06cc \u067e\u06c1\u0644\u0648 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062e\u062a\u0645 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u0635\u0627\u0631\u0641 \u06a9\u0648 \u062c\u0648 \u0628\u06be\u06cc \u0686\u06cc\u0632 \u062f\u0631\u06a9\u0627\u0631 \u06c1\u0648\u062a\u06cc \u06c1\u06d2 \u0648\u06c1 \u0645\u0634\u062a\u0631\u06a9\u06c1 \u0627\u0633\u0679\u0648\u0631\u06cc\u062c \u0645\u06cc\u06ba \u0631\u06c1\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u067e \u0644\u0648\u0688\u0632\u060c \u0628\u0646\u0627\u0626\u06cc \u06af\u0626\u06cc \u0641\u0627\u0626\u0644\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0633\u06cc\u0634\u0646 \u06a9\u06cc \u062d\u0627\u0644\u062a \u06a9\u0633\u06cc \u0627\u06cc\u06a9 \u0633\u0631\u0648\u0631 \u06a9\u06cc \u0645\u0642\u0627\u0645\u06cc \u0688\u0633\u06a9 \u067e\u0631 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u0646\u06cc \u0686\u0627\u06c1\u06cc\u06d2\u06d4 \u0628\u0635\u0648\u0631\u062a \u062f\u06cc\u06af\u0631\u060c \u06cc\u06c1 \u0635\u0627\u0631\u0641 \u06a9\u06cc \u0646\u0638\u0631 \u0633\u06d2 \u063a\u0627\u0626\u0628 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u0644\u0648\u0688 \u0628\u06cc\u0644\u0646\u0633\u0631 \u0627\u06af\u0644\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0628\u06be\u06cc\u062c\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-lessons-learned-the-hard-way\">\u0633\u0628\u0642 \u0645\u0634\u06a9\u0644 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0633\u06cc\u06a9\u06be\u0627\u06d4<\/h2>\n<h3 id=\"heading-1-premature-optimization\">1. \u0627\u0628\u062a\u062f\u0627\u0626\u06cc \u0627\u0635\u0644\u0627\u062d<\/h3>\n<p>\u06cc\u06c1 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u062e\u0648\u062f \u06a9\u0648 \u0646\u0641\u06cc\u0633 \u0627\u0646\u0641\u0631\u0627\u0633\u0679\u0631\u06a9\u0686\u0631 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0633 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06a9\u06c1 \u0627\u06cc\u067e \u06a9\u06d2 \u0627\u067e\u0646\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u06a9\u0648\u0626\u06cc \u062d\u0642\u06cc\u0642\u06cc \u0645\u0631\u0626\u06cc\u062a \u06c1\u0648\u06d4<\/p>\n<p>\u0639\u0645\u0644\u06cc \u0631\u0627\u0633\u062a\u06c1 \u0628\u06c1\u062a\u0631 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u06a9\u06c1 \u0631\u06a9\u0627\u0648\u0679\u0648\u06ba \u06a9\u06cc \u067e\u06cc\u0645\u0627\u0626\u0634 \u06a9\u0631\u06cc\u06ba\u060c \u0627\u0646 \u06a9\u06cc \u062f\u0631\u062c\u06c1 \u0628\u0646\u062f\u06cc \u06a9\u0631\u06cc\u06ba\u060c \u0633\u0628 \u0633\u06d2 \u0628\u0691\u06cc \u06a9\u0648 \u062f\u0631\u0633\u062a \u06a9\u0631\u06cc\u06ba\u060c \u0627\u0648\u0631 \u062f\u06c1\u0631\u0627\u0626\u06cc\u06ba\u06d4 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 Laravel \u0627\u06cc\u067e\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0627\u0633\u06a9\u06cc\u0644\u0646\u06af \u06a9\u0627 \u067e\u06c1\u0644\u0627 \u062f\u0648\u0631 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0627\u0634\u0627\u0631\u06cc\u06c1 \u0633\u0627\u0632\u06cc\u060c N+1 \u062a\u0631\u0645\u06cc\u0645\u060c \u0642\u0637\u0627\u0631 \u06a9\u06cc \u062a\u0642\u0633\u06cc\u0645\u060c \u0627\u0648\u0631 \u067e\u06d2 \u0644\u0648\u0688 \u062a\u0631\u0627\u0634\u0646\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-2-over-caching\">2. \u0636\u0631\u0648\u0631\u062a \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u06a9\u06cc\u0634\u0646\u06af<\/h3>\n<p>\u06a9\u06cc\u0634\u0646\u06af \u0633\u0633\u0679\u0645 \u06a9\u0648 \u0627\u06cc\u06a9 \u06c1\u06cc \u0648\u0642\u062a \u0645\u06cc\u06ba \u062a\u06cc\u0632 \u0627\u0648\u0631 \u0645\u0634\u06a9\u0644 \u0628\u0646\u0627 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0679\u06cc\u0645 \u0646\u06d2 \u0627\u06a9\u0627\u0624\u0646\u0679 \u0633\u06cc\u0679 \u0627\u067e \u06a9\u06d2 \u062c\u0648\u0627\u0628\u0627\u062a \u06a9\u0648 30 \u0645\u0646\u0679 \u062a\u06a9 \u0645\u062d\u0641\u0648\u0638 \u06a9\u06cc\u0627 \u0627\u0648\u0631 \u067e\u06be\u0631 \u0628\u0639\u062f \u0645\u06cc\u06ba \u0627\u0646\u06c1\u06cc \u062c\u0648\u0627\u0628\u0627\u062a \u0645\u06cc\u06ba \u06a9\u0631\u062f\u0627\u0631 \u06a9\u06cc \u062a\u0628\u062f\u06cc\u0644\u06cc\u0648\u06ba \u06a9\u0648 \u0633\u0645\u06cc\u0679 \u062f\u06cc\u0627\u06d4 \u0646\u062a\u06cc\u062c\u06d2 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u060c \u062c\u0646 \u0635\u0627\u0631\u0641\u06cc\u0646 \u0646\u06d2 \u0627\u0628\u06be\u06cc \u0631\u0633\u0627\u0626\u06cc \u06a9\u06be\u0648 \u062f\u06cc \u062a\u06be\u06cc \u0648\u06c1 \u0627\u0633 \u062e\u0635\u0648\u0635\u06cc\u062a \u06a9\u0648 \u062f\u06cc\u06a9\u06be\u0646\u0627 \u062c\u0627\u0631\u06cc \u0631\u06a9\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0628 \u062a\u06a9 \u06a9\u06c1 \u06a9\u06cc\u0634\u06d2 \u06a9\u06cc \u0645\u06cc\u0639\u0627\u062f \u062e\u062a\u0645 \u0646\u06c1 \u06c1\u0648 \u062c\u0627\u0626\u06d2\u06d4<\/p>\n<p>\u062f\u0631\u0633\u062a\u06cc \u06cc\u06c1 \u062a\u06be\u06cc \u06a9\u06c1 \u0627\u06a9\u0627\u0624\u0646\u0679 \u06a9\u06d2 \u0645\u0633\u062a\u062d\u06a9\u0645 \u0645\u06cc\u0679\u0627 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u0627\u062c\u0627\u0632\u062a \u06a9\u06cc \u062d\u0633\u0627\u0633 \u062d\u0627\u0644\u062a \u0633\u06d2 \u0627\u0644\u06af \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4 \u0633\u0628\u0642 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u062a\u0635\u062f\u06cc\u0642\u06cc \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u06a9\u06cc\u0634 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u06af\u0631\u06cc\u0632 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u062c\u0628 \u062a\u06a9 \u06a9\u06c1 \u0622\u067e \u063a\u0644\u0637 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0627\u062d\u062a\u06cc\u0627\u0637 \u0633\u06d2 \u0646\u06c1 \u0633\u0648\u0686\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-3-missing-indexes\">3. \u06af\u0645\u0634\u062f\u06c1 \u0627\u0634\u0627\u0631\u06cc\u06c1 \u062c\u0627\u062a<\/h3>\n<p>\u06cc\u06c1 \u0627\u0633 \u0648\u0642\u062a \u062a\u06a9 \u0686\u06be\u067e\u0627 \u06c1\u0648\u0627 \u06c1\u06d2 \u062c\u0628 \u062a\u06a9 \u06a9\u06c1 \u0645\u06cc\u0632 \u0633\u0627\u0626\u0632 \u06a9\u06cc \u062d\u062f \u0633\u06d2 \u062a\u062c\u0627\u0648\u0632 \u0646\u06c1 \u06a9\u0631 \u062c\u0627\u0626\u06d2\u06d4 \u0627\u06cc\u06a9 \u0633\u0648\u0627\u0644 \u062c\u0648 \u062a\u0631\u0642\u06cc \u0645\u06cc\u06ba 20,000 \u0642\u0637\u0627\u0631\u0648\u06ba \u06a9\u0648 \u0627\u0633\u06a9\u06cc\u0646 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u067e\u06cc\u062f\u0627\u0648\u0627\u0631 \u0645\u06cc\u06ba 20 \u0645\u0644\u06cc\u0646 \u0642\u0637\u0627\u0631\u0648\u06ba \u06a9\u0648 \u0627\u0633\u06a9\u06cc\u0646 \u06a9\u0631\u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u067e\u0646\u06d2 \u0641\u0646\u06a9\u0634\u0646\u0644 \u06a9\u0627\u0645\u0648\u06ba \u0645\u06cc\u06ba \u0627\u0646\u0688\u06cc\u06a9\u0633 \u06a9\u06d2 \u062c\u0627\u0626\u0632\u06d2 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0646\u0688\u06cc\u06a9\u0633 \u06a9\u06cc \u0628\u0691\u06cc \u0645\u0646\u062a\u0642\u0644\u06cc \u06a9\u06cc \u0645\u0646\u0635\u0648\u0628\u06c1 \u0628\u0646\u062f\u06cc \u06a9\u0631\u06cc\u06ba \u062a\u0627\u06a9\u06c1 \u0628\u062f\u062a\u0631\u06cc\u0646 \u0645\u0645\u06a9\u0646\u06c1 \u0648\u0642\u062a \u067e\u0631 \u06af\u0631\u0645 \u0645\u06cc\u0632\u0648\u06ba \u06a9\u0648 \u0628\u0646\u062f \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u0628\u0686\u0627 \u062c\u0627 \u0633\u06a9\u06d2\u06d4<\/p>\n<h3 id=\"heading-4-queue-overload\">4. \u0642\u0637\u0627\u0631 \u0627\u0648\u0648\u0631\u0644\u0648\u0688<\/h3>\n<p>\u0642\u0637\u0627\u0631 \u0645\u0644\u0627\u0632\u0645\u062a\u0648\u06ba \u06a9\u0648 \u06c1\u0679\u0627\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u06a9\u0644\u0627\u0633\u06a9 \u0646\u0627\u06a9\u0627\u0645\u06cc \u062a\u0628 \u06c1\u0648\u062a\u06cc \u06c1\u06d2 \u062c\u0628 \u0627\u06cc\u06a9 \u0634\u0648\u0631 \u06a9\u0627\u0645 \u06a9\u0627 \u0628\u0648\u062c\u06be \u0628\u0627\u0642\u06cc \u0633\u0628 \u0686\u06cc\u0632\u0648\u06ba \u06a9\u0648 \u0631\u0648\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0628\u0691\u06cc CSV \u062f\u0631\u0622\u0645\u062f \u0645\u0631\u06a9\u0632\u06cc \u0642\u0637\u0627\u0631 \u06a9\u0648 \u0627\u0648\u0648\u0631 \u0641\u0644\u0648 \u06a9\u0631 \u062f\u06d2 \u06af\u06cc \u0627\u0648\u0631 \u067e\u0627\u0633 \u0648\u0631\u0688 \u062f\u0648\u0628\u0627\u0631\u06c1 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u0646\u06d2 \u0648\u0627\u0644\u06cc \u0627\u06cc \u0645\u06cc\u0644\u0632 \u0627\u0633 \u06a9\u06d2 \u067e\u06cc\u0686\u06be\u06d2 \u067e\u06be\u0646\u0633 \u062c\u0627\u0626\u06cc\u06ba \u06af\u06cc\u06d4 \u0627\u06cc\u06a9 \u0627\u0644\u06af \u0642\u0637\u0627\u0631 \u0627\u0633 \u067e\u0648\u0631\u06cc \u0627\u06cc\u06a9\u0633\u06cc\u0688\u0646\u0679 \u06a9\u0644\u0627\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u0633\u062a\u06cc \u0628\u06cc\u0645\u06c1 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-5-large-transactions\">5. \u0628\u0691\u06d2 \u0644\u06cc\u0646 \u062f\u06cc\u0646<\/h3>\n<p>\u0644\u0645\u0628\u06d2 \u0644\u06cc\u0646 \u062f\u06cc\u0646 \u0645\u06cc\u06ba \u062a\u0627\u0644\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0646\u0627\u06a9\u0627\u0645\u06cc \u06a9\u06cc \u0648\u062c\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0645\u06c1\u0646\u06af\u06d2 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0644\u06cc\u0646 \u062f\u06cc\u0646 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u06a9\u0627\u0645 \u06a9\u0631\u0646\u0627 \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 \u062e\u0637\u0631\u0646\u0627\u06a9 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06a9\u0627\u0631\u06a9\u0646\u0627\u0646 \u06a9\u0648 \u0644\u06cc\u0646 \u062f\u06cc\u0646 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06a9\u0627\u0645 \u0645\u0644 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-php\">DB::transaction(function () use ($request) {\n    $order = Order::create([...]);\n    \\(order->items()->createMany(\\)request->items);\n\n    GenerateInvoicePdf::dispatch($order->id);\n    SyncOrderToCrm::dispatch($order->id);\n});\n<\/code><\/pre>\n<p>\u0627\u0646 \u062a\u0645\u0627\u0645 \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u0648\u0633\u0679 \u06a9\u0645\u0679 \u0688\u0633\u067e\u06cc\u0686 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba \u062c\u0648 \u067e\u0631\u0639\u0632\u0645 \u0688\u06cc\u0679\u0627 \u067e\u0631 \u0645\u0646\u062d\u0635\u0631 \u06c1\u0648\u06ba\u06d4<\/p>\n<pre><code class=\"language-php\">GenerateInvoicePdf::dispatch($order->id)->afterCommit();\nSyncOrderToCrm::dispatch($order->id)->afterCommit();\n<\/code><\/pre>\n<p>\u0644\u06cc\u0646 \u062f\u06cc\u0646 \u06a9\u06d2 \u062f\u0627\u0626\u0631\u06c1 \u06a9\u0627\u0631 \u06a9\u0648 \u0688\u06cc\u0679\u0627 \u062a\u06a9 \u0631\u06a9\u06be\u06cc\u06ba \u062c\u0633\u06d2 \u0627\u0635\u0644 \u0645\u06cc\u06ba \u062c\u0648\u06c1\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-6-treating-symptoms-as-causes\">6. \u0639\u0644\u0627\u0645\u0627\u062a \u06a9\u0627 \u0639\u0644\u0627\u062c \u0627\u0633\u0628\u0627\u0628 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u06cc\u06c1 \u0645\u06c1\u0646\u06af\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u06a9\u0627 \u0627\u06cc\u0646\u0688 \u067e\u0648\u0627\u0626\u0646\u0679 300 \u0627\u0633\u062a\u0641\u0633\u0627\u0631\u0627\u062a \u0686\u0644\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633 \u0645\u06cc\u06ba \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0627\u062e\u06cc\u0631 \u06c1\u06d2\u060c \u062a\u0648 \u0627\u06cc\u06a9 \u0627\u06cc\u067e \u0633\u0631\u0648\u0631 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u0622\u067e \u06a9\u06d2 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u067e\u0631 \u0628\u0648\u062c\u06be \u0628\u0691\u06be \u062c\u0627\u0626\u06d2 \u06af\u0627\u06d4 \u0627\u06af\u0631 \u0622\u067e \u06a9\u0627 \u06a9\u0627\u0645 \u0633\u0633\u062a \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06cc\u06c1 \u0627\u06cc\u06a9 \u0628\u06cc\u0631\u0648\u0646\u06cc API \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06c1 \u0645\u062d\u062f\u0648\u062f \u06c1\u06d2\u060c \u062a\u0648 \u0645\u0632\u06cc\u062f \u06a9\u0627\u0631\u06a9\u0646\u0648\u06ba \u06a9\u0648 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u0646\u0627\u06a9\u0627\u0645\u06cc\u0648\u06ba \u0645\u06cc\u06ba \u06a9\u0626\u06cc \u06af\u0646\u0627 \u0627\u0636\u0627\u0641\u06c1 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u06af\u0627\u06d4<\/p>\n<p>\u0627\u0686\u06be\u0627 \u0633\u06a9\u06cc\u0644\u0646\u06af \u06a9\u0627 \u06a9\u0627\u0645 \u0627\u06cc\u06a9 \u06c1\u06cc \u0633\u0648\u0627\u0644\u0627\u062a \u06a9\u0648 \u0628\u0627\u0631 \u0628\u0627\u0631 \u067e\u0648\u0686\u06be\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u0648\u0646 \u0633\u06d2 \u0648\u0633\u0627\u0626\u0644 \u0633\u06cc\u0631 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u061f \u06a9\u0648\u0646 \u0633\u0627 \u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u0646\u0642\u0637\u06c1\u060c \u06a9\u0627\u0645\u060c \u06a9\u0631\u0627\u06cc\u06c1 \u062f\u0627\u0631\u060c \u06cc\u0627 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u0645\u0633\u0626\u0644\u06c1 \u06a9\u0627 \u0633\u0628\u0628 \u0628\u0646 \u0631\u06c1\u0627 \u06c1\u06d2\u061f \u06a9\u06cc\u0627 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u067e\u0631 \u06cc\u06c1 \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2\u061f \u06a9\u06cc\u0627 \u0627\u0633\u06d2 \u06a9\u0645\u060c \u0645\u0644\u062a\u0648\u06cc\u060c \u06a9\u06cc\u0634 \u06cc\u0627 \u0627\u0644\u06af \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u061f \u0645\u06cc\u06ba \u06a9\u06cc\u0633\u06d2 \u062c\u0627\u0646 \u0633\u06a9\u062a\u0627 \u06c1\u0648\u06ba \u06a9\u06c1 \u0622\u06cc\u0627 \u0645\u06cc\u0631\u06cc \u062a\u0628\u062f\u06cc\u0644\u06cc\u0648\u06ba \u0645\u06cc\u06ba \u0645\u062f\u062f \u0645\u0644\u06cc\u061f<\/p>\n<h2 id=\"heading-a-pre-launch-scaling-checklist\">\u067e\u0631\u06cc \u0644\u0627\u0646\u0686 \u0627\u06cc\u06a9\u0633\u067e\u06cc\u0646\u0634\u0646 \u0686\u06cc\u06a9 \u0644\u0633\u0679<\/h2>\n<p>\u06a9\u0633\u06cc \u0628\u0691\u06d2 \u0644\u0627\u0646\u0686\u060c \u0679\u0631\u06cc\u0641\u06a9 \u0645\u06c1\u0645\u060c \u06cc\u0627 \u06a9\u0627\u0631\u067e\u0648\u0631\u06cc\u0679 \u0644\u0627\u0646\u0686 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0627\u06cc\u0633\u0627 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u06a9\u0648\u0634\u0634 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p><strong>\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0648\u0631 \u0631\u0646 \u0679\u0627\u0626\u0645:<\/strong> \u062a\u0639\u06cc\u0646\u0627\u062a\u06cc \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u06a9\u06cc\u0634 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646\u060c \u0631\u0627\u0633\u062a\u06d2 \u0627\u0648\u0631 \u0645\u0646\u0627\u0638\u0631\u06d4 \u0633\u06cc\u0679 <code>APP_DEBUG=false<\/code>. OPcache \u06a9\u0648 \u0622\u0646 \u06a9\u0631\u06cc\u06ba\u06d4 \u0648\u06cc\u0628 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u06a9\u0648 \u0645\u062e\u062a\u0635\u0631 \u0631\u06a9\u06be\u06cc\u06ba \u0627\u0648\u0631 \u0633\u0633\u062a \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0642\u0637\u0627\u0631 \u0645\u06cc\u06ba \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u067e \u0644\u0648\u0688\u0632 \u06a9\u0648 \u0627\u06cc\u067e \u0633\u0631\u0648\u0631 \u0688\u0633\u06a9 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0622\u0628\u062c\u06cc\u06a9\u0679 \u0627\u0633\u0679\u0648\u0631\u06cc\u062c \u0645\u06cc\u06ba \u0627\u0633\u0679\u0648\u0631 \u06a9\u0631\u06cc\u06ba\u06d4 \u0633\u0631\u0648\u0631\u0632 \u06a9\u0648 \u0628\u06d2 \u0648\u0637\u0646 \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u06d4 \u062a\u0645\u0627\u0645 \u0628\u06cc\u0631\u0648\u0646\u06cc HTTP \u06a9\u0627\u0644\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0679\u0627\u0626\u0645 \u0622\u0624\u0679 \u0633\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p><strong>\u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633:<\/strong> \u067e\u06c1\u0644\u06d2 \u0627\u067e\u0646\u06d2 \u0633\u0633\u062a \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u06d2 \u0644\u0627\u06af\u0632 \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u06ba\u06d4 \u0628\u0691\u06d2 \u0641\u0644\u0679\u0631\u0632\u060c \u062c\u0648\u0627\u0626\u0646\u0632 \u0627\u0648\u0631 \u062a\u0631\u062a\u06cc\u0628 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0634\u0627\u0631\u06cc\u06c1 \u062c\u0627\u062a \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 \u06a9\u0646\u0679\u0631\u0648\u0644\u0631\u0632\u060c \u0648\u0633\u0627\u0626\u0644\u060c \u067e\u0627\u0644\u06cc\u0633\u06cc\u0648\u06ba \u0627\u0648\u0631 \u0622\u0631\u0627\u0621 \u0645\u06cc\u06ba N+1 \u06a9\u06d2 \u0633\u0648\u0627\u0644\u0627\u062a \u062a\u0644\u0627\u0634 \u06a9\u0631\u06cc\u06ba\u06d4 \u0641\u06c1\u0631\u0633\u062a \u06a9\u06d2 \u062a\u0645\u0627\u0645 \u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u0645\u0642\u0627\u0645\u0627\u062a \u06a9\u0648 \u0635\u0641\u062d\u06c1 \u0628\u0646\u062f\u06cc \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba <code>chunkById<\/code> \u06cc\u0627 \u0628\u06cc\u0686 \u0622\u067e\u0631\u06cc\u0634\u0646\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0631\u0633\u0631\u06d4 \u0644\u06cc\u0646 \u062f\u06cc\u0646 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u0637\u0648\u06cc\u0644 \u0644\u06cc\u0646 \u062f\u06cc\u0646 \u0627\u0648\u0631 \u0628\u06cc\u0631\u0648\u0646\u06cc \u06a9\u0627\u0644\u0648\u06ba \u0633\u06d2 \u067e\u0631\u06c1\u06cc\u0632 \u06a9\u0631\u06cc\u06ba\u06d4 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba \u06a9\u06c1 \u0622\u067e \u06a9\u0627 \u0628\u06cc\u06a9 \u0627\u067e \u0627\u0648\u0631 \u0628\u062d\u0627\u0644\u06cc \u06a9\u0627 \u0639\u0645\u0644 \u06a9\u0627\u0645 \u06a9\u0631 \u0631\u06c1\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u0646\u0642\u0644\u06cc\u06ba \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0648 \u067e\u0691\u06be\u06d2 \u062c\u0627\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0628\u0627\u0633\u06cc \u0631\u0648\u06cc\u06d2 \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p><strong>\u0631\u06cc\u0688\u06cc\u0633 \u0627\u0648\u0631 \u06a9\u06cc\u0634\u06d2:<\/strong> \u06a9\u06cc\u0634\u0632\u060c \u0633\u06cc\u0634\u0646\u0632\u060c \u0631\u06cc\u0679 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u0646\u06d2\u060c \u0627\u0648\u0631 \u0645\u0646\u0627\u0633\u0628 \u0642\u0637\u0627\u0631\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 Redis \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 TTL \u0645\u0642\u0631\u0631 \u06a9\u0631\u06cc\u06ba \u062c\u0628 \u062a\u06a9 \u06a9\u06c1 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 \u0646\u06c1 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0648\u0627\u0636\u062d \u0648\u062c\u06c1 \u06c1\u0648\u06d4 \u0627\u06af\u0631 \u0645\u062a\u0639\u0644\u0642\u06c1 \u06c1\u0648 \u062a\u0648 \u06a9\u0644\u06cc\u062f \u0645\u06cc\u06ba \u06a9\u0631\u0627\u06cc\u06c1 \u062f\u0627\u0631\u060c \u0635\u0627\u0631\u0641\u060c \u0645\u0642\u0627\u0645\u060c \u0627\u0648\u0631 \u0648\u0631\u0698\u0646 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 \u06c1\u0645\u0627\u0631\u06cc \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u0627\u0648\u0631 \u0628\u06d2 \u062f\u062e\u0644\u06cc \u06a9\u06cc \u067e\u0627\u0644\u06cc\u0633\u06cc\u0648\u06ba \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u06ba\u06d4 \u0627\u062d\u062a\u06cc\u0627\u0637 \u0633\u06d2 \u063a\u0644\u0637 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u0627\u062c\u0627\u0632\u062a \u06a9\u06d2 \u062d\u0633\u0627\u0633 \u062c\u0648\u0627\u0628\u0627\u062a \u06a9\u0648 \u06a9\u06cc\u0634 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u06af\u0631\u06cc\u0632 \u06a9\u0631\u06cc\u06ba\u06d4 \u0645\u06c1\u0646\u06af\u06cc \u062f\u0648\u0628\u0627\u0631\u06c1 \u06af\u0646\u062a\u06cc \u06a9\u06cc \u0648\u062c\u06c1 \u0633\u06d2 \u06a9\u06cc\u0634\u06d2 \u06a9\u06d2 \u0636\u0628\u0637 \u06a9\u0648 \u0631\u0648\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p><strong>\u062f\u0645:<\/strong> \u06a9\u0627\u0645 \u06a9\u06d2 \u0628\u0648\u062c\u06be \u0633\u06d2 \u0642\u0637\u0627\u0631\u06cc\u06ba \u0627\u0644\u06af \u06a9\u0631\u06cc\u06ba\u06d4 \u06c1\u0648\u0631\u0627\u0626\u0632\u0646 \u0633\u067e\u0631\u0648\u0627\u0626\u0632\u0631\u0632 \u06a9\u0648 \u0641\u06cc \u0642\u0637\u0627\u0631 \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f \u067e\u0631 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u06ba\u06d4 \u06c1\u0645 \u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631 \u0679\u0627\u0626\u0645 \u0622\u0624\u0679\u060c \u062f\u0648\u0628\u0627\u0631\u06c1 \u06a9\u0648\u0634\u0634\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0628\u06cc\u06a9 \u0622\u0641 \u0633\u06cc\u0679 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u062c\u0628 \u0645\u0645\u06a9\u0646 \u06c1\u0648 \u0622\u067e\u0631\u06cc\u0634\u0646\u0648\u06ba \u06a9\u0648 \u06a9\u0645\u0632\u0648\u0631 \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba <code>afterCommit<\/code> \u0627\u0646 \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u062c\u0648 \u067e\u0631\u0639\u0632\u0645 \u0688\u06cc\u0679\u0627 \u067e\u0631 \u0645\u0646\u062d\u0635\u0631 \u06c1\u06cc\u06ba\u06d4 \u062a\u0627\u062e\u06cc\u0631\u060c \u0631\u0646 \u0679\u0627\u0626\u0645\u060c \u0646\u0627\u06a9\u0627\u0645\u06cc\u0648\u06ba \u0627\u0648\u0631 \u062f\u0648\u0628\u0627\u0631\u06c1 \u06a9\u0648\u0634\u0634\u0648\u06ba \u06a9\u06cc \u0646\u06af\u0631\u0627\u0646\u06cc \u06a9\u0631\u06cc\u06ba\u06d4 \u0646\u0627\u06a9\u0627\u0645 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0646\u0638\u0631 \u0627\u0646\u062f\u0627\u0632 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0627\u0646 \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u06ba\u06d4<\/p>\n<p><strong>apis:<\/strong> \u062c\u0648\u0627\u0628 \u06a9\u06cc \u0634\u06a9\u0644 \u06a9\u0648 \u06a9\u0646\u0679\u0631\u0648\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0648\u0633\u0627\u0626\u0644 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 \u0679\u0648\u067e\u06cc <code>per_page<\/code>. \u0628\u0691\u06cc \u0641\u06cc\u0688\u0632 \u0627\u0648\u0631 \u0644\u0627\u06af\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0631\u0633\u0631 \u0635\u0641\u062d\u06c1 \u0628\u0646\u062f\u06cc \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 \u06a9\u06cc\u0632 \u0627\u0648\u0631 \u0645\u062e\u062a\u0635\u0631 \u0679\u06cc \u0679\u06cc \u0627\u06cc\u0644 \u06a9\u06d2 \u0645\u062d\u0641\u0648\u0638 \u0648\u0631\u0698\u0646\u0632 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0645\u06c1\u0646\u06af\u06d2 \u0631\u06cc\u0688\u0632 \u06a9\u06cc\u0634 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u0642\u06cc\u0645\u062a \u06a9\u06d2 \u0644\u062d\u0627\u0638 \u0633\u06d2 \u0634\u0631\u062d \u06a9\u0648 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0627\u0637\u0644\u0627\u0642 \u06a9\u0631\u06cc\u06ba\u06d4 \u062e\u0627\u0645 \u0641\u0635\u0627\u062d\u062a \u0645\u0627\u0688\u0644 \u0648\u0627\u067e\u0633 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba. \u06a9\u0646\u0627\u0631\u0648\u06ba \u067e\u0631 \u0631\u062f\u0639\u0645\u0644 \u06a9\u0648 \u06a9\u0645\u067e\u0631\u06cc\u0633 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p><strong>\u0645\u0634\u0627\u06c1\u062f\u06c1:<\/strong> \u0627\u06c1\u0645 \u0627\u062e\u062a\u062a\u0627\u0645\u06cc \u067e\u0648\u0627\u0626\u0646\u0679\u0633 \u067e\u0631 p50\u060c p95\u060c \u0627\u0648\u0631 p99 \u0644\u06cc\u0679\u0646\u0633\u06cc \u06a9\u0648 \u0679\u0631\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba\u06d4 \u0631\u0627\u0633\u062a\u06d2 \u0627\u0648\u0631 \u0679\u0627\u0633\u06a9 \u06a9\u0644\u0627\u0633 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06c1 \u063a\u0644\u0637\u06cc \u06a9\u06cc \u0634\u0631\u062d\u0648\u06ba \u06a9\u0648 \u0679\u0631\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba\u06d4 \u06cc\u06c1 \u0622\u067e \u06a9\u0648 \u0642\u0637\u0627\u0631 \u06a9\u06d2 \u0627\u0646\u062a\u0638\u0627\u0631 \u06a9\u06d2 \u0627\u0648\u0642\u0627\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0633\u0627\u062a\u06be \u0633\u0627\u0626\u0632 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u062e\u0628\u0631\u062f\u0627\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 CPU\u060c \u06a9\u0646\u06a9\u0634\u0646\u060c \u0633\u0633\u062a \u0633\u0648\u0627\u0644\u0627\u062a\u060c \u0627\u0648\u0631 \u0644\u0627\u06a9 \u0627\u0646\u062a\u0638\u0627\u0631 \u06a9\u0627 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4 Redis \u0645\u06cc\u0645\u0648\u0631\u06cc\u060c \u0644\u06cc\u0679\u0646\u0633\u06cc \u0627\u0648\u0631 \u0628\u06d2 \u062f\u062e\u0644\u06cc \u06a9\u0648 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u062f\u0648\u0627\u0631 \u0627\u0648\u0631 \u0634\u0646\u0627\u062e\u062a \u06a9\u0646\u0646\u062f\u06af\u0627\u0646 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0627\u06c1\u0645 \u06a9\u0627\u0631\u0648\u0628\u0627\u0631\u06cc \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0631\u06cc\u06a9\u0627\u0631\u0688 \u06a9\u0631\u06cc\u06ba\u06d4 \u062e\u0627\u0645\u0648\u0634 \u0627\u0646\u062a\u0628\u0627\u06c1\u0627\u062a \u0628\u063a\u06cc\u0631 \u0627\u0646\u062a\u0628\u0627\u06c1\u0627\u062a \u0633\u06d2 \u0628\u062f\u062a\u0631 \u06c1\u0648 \u0633\u06a9\u062a\u06cc \u06c1\u06cc\u06ba\u060c \u0644\u06c1\u0630\u0627 \u0644\u0627\u0646\u0686 \u06a9\u06cc \u0631\u0627\u062a \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0627\u067e\u0646\u06d2 \u0627\u0646\u062a\u0628\u0627\u06c1\u0627\u062a \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-conclusion\">\u0646\u062a\u06cc\u062c\u06c1<\/h2>\n<p>Laravel \u0627\u0639\u0644\u06cc \u0679\u0631\u06cc\u0641\u06a9 \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u0633\u0633\u0679\u0645\u0632 \u067e\u0631 \u0645\u0624\u062b\u0631 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0686\u0644\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u0688\u06cc\u0679\u0627\u060c \u06c1\u0645 \u0622\u06c1\u0646\u06af\u06cc\u060c \u0627\u0648\u0631 \u0628\u06cc\u0631\u0648\u0646\u06cc \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u0648 \u0630\u06c1\u0646 \u0645\u06cc\u06ba \u0631\u06a9\u06be\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0628\u06c1\u062a\u0631 \u0628\u0646\u0627\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u067e\u06cc\u0645\u0627\u0626\u0634 \u06a9\u0631\u0646\u0627 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba\u060c \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0627\u0646\u062f\u0627\u0632\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u0633\u06d2 \u0648\u0642\u062a \u0636\u0627\u0626\u0639 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u063a\u0644\u0637 \u062a\u06c1\u0648\u06ba \u06a9\u0648 \u067e\u06cc\u0686\u06cc\u062f\u06c1 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0631\u062c\u062d\u0627\u0646 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u067e\u06c1\u0644\u06d2 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0645\u06cc\u06ba \u062a\u0631\u0645\u06cc\u0645 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u0634\u0627\u0631\u06cc\u06c1 \u062c\u0627\u062a\u060c \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u06cc \u0634\u06a9\u0644\u06cc\u06ba\u060c \u0635\u0641\u062d\u06c1 \u0628\u0646\u062f\u06cc\u060c \u0627\u0648\u0631 \u0628\u06d2 \u0686\u06cc\u0646 \u0644\u0648\u0688\u0646\u06af \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0628\u062a\u062f\u0627\u0626\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0633\u0628 \u0633\u06d2 \u0628\u0691\u06cc \u0627\u062f\u0627\u0626\u06cc\u06af\u06cc \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u06a9\u0648 \u062a\u06cc\u0632 \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0642\u0637\u0627\u0631\u0648\u06ba \u06a9\u0627 \u0641\u0627\u0626\u062f\u06c1 \u0627\u0679\u06be\u0627\u0626\u06cc\u06ba \u0627\u0648\u0631 \u067e\u0633 \u0645\u0646\u0638\u0631 \u06a9\u06d2 \u06a9\u0646\u0679\u0631\u0648\u0644 \u0648\u0627\u0644\u06d2 \u06a9\u0627\u0631\u06a9\u0646\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u0633\u062a \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0622\u06af\u06d2 \u0628\u0691\u06be\u0627\u0626\u06cc\u06ba\u06d4 \u06c1\u0645 \u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631 \u0648\u0627\u0636\u062d \u06a9\u0644\u06cc\u062f\u0648\u06ba\u060c \u0639\u0627\u0645 TTL\u060c \u0627\u0648\u0631 \u0628\u0627\u0637\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0645\u0646\u0635\u0648\u0628\u06d2 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u06cc\u0634 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u062a\u0627\u062e\u06cc\u0631\u060c \u063a\u0644\u0637\u06cc\u0648\u06ba\u060c \u0642\u0637\u0627\u0631 \u0645\u06cc\u06ba \u062a\u0627\u062e\u06cc\u0631\u060c \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u06cc \u0635\u062d\u062a\u060c \u0631\u06cc\u0688\u06cc\u0633 \u0645\u06cc\u0645\u0648\u0631\u06cc\u060c \u0627\u0648\u0631 \u0628\u06cc\u0631\u0648\u0646\u06cc \u0627\u0646\u062d\u0635\u0627\u0631 \u067e\u0631 \u0646\u0638\u0631 \u0631\u06a9\u06be\u06cc\u06ba\u06d4<\/p>\n<p>\u0633\u06a9\u06cc\u0644\u0646\u06af \u06a9\u06d2 \u0628\u06c1\u062a\u0631\u06cc\u0646 \u0622\u067e\u0631\u06cc\u0634\u0646\u0632 \u0639\u0645\u0644\u06cc \u0627\u0648\u0631 \u062f\u0648\u0628\u0627\u0631\u06c1 \u06a9\u06cc\u06d2 \u062c\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 \u0645\u0648\u062c\u0648\u062f \u0633\u0633\u0679\u0645\u0632 \u06a9\u0627 \u0645\u0637\u0627\u0644\u0639\u06c1 \u06a9\u0631\u06cc\u06ba\u060c \u0641\u0636\u0644\u06c1 \u06a9\u0648 \u062e\u062a\u0645 \u06a9\u0631\u06cc\u06ba\u060c \u0633\u0633\u062a \u062d\u0635\u0648\u06ba \u06a9\u0648 \u0627\u0644\u06af \u06a9\u0631\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0627\u0639\u062a\u0645\u0627\u062f \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u067e\u0646\u06cc \u0627\u06af\u0644\u06cc \u062a\u0628\u062f\u06cc\u0644\u06cc\u0627\u06ba \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0627\u0641\u06cc \u0645\u0631\u0626\u06cc\u062a \u062d\u0627\u0635\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u0628\u0627\u0631 \u0628\u0627\u0631 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2 \u062a\u0648 \u0628\u0691\u06cc \u062f\u0648\u0628\u0627\u0631\u06c1 \u062a\u062d\u0631\u06cc\u0631\u06cc\u06ba \u0634\u0627\u0630 \u0648 \u0646\u0627\u062f\u0631 \u06c1\u06cc \u0636\u0631\u0648\u0631\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-references\">\u062d\u0648\u0627\u0644\u06c1 \u062c\u0627\u062a<\/h2>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u067e\u06c1\u0644\u0627 \u0633\u06a9\u06cc\u0644\u0646\u06af \u06a9\u0627 \u0645\u0633\u0626\u0644\u06c1 \u0634\u0627\u0630 \u0648 \u0646\u0627\u062f\u0631 \u06c1\u06cc \u0627\u0686\u0627\u0646\u06a9 \u067e\u06cc\u062f\u0627 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u062a\u06be\u0648\u0691\u06cc \u062f\u06cc\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u0628 \u06a9\u0686\u06be \u0679\u06be\u06cc\u06a9 \u06c1\u06d2\u06d4 \u0635\u0641\u062d\u0627\u062a \u062a\u06cc\u0632\u06cc \u0633\u06d2 \u0644\u0648\u0688 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0628\u0645\u0634\u06a9\u0644 \u06c1\u06cc \u067e\u0633\u06cc\u0646\u06c1 \u0628\u06c1\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0679\u06cc\u0645\u06cc\u06ba \u0628\u0646\u06cc\u0627\u062f\u06cc \u0688\u06be\u0627\u0646\u0686\u06d2 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0632\u06cc\u0627\u062f\u06c1 \u0633\u0648\u0686\u06d2 \u0628\u063a\u06cc\u0631 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u067e\u06be\u0631 \u0679\u0631\u06cc\u0641\u06a9 \u0628\u0691\u06be \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4 \u0622\u067e \u06a9\u06cc \u0645\u06c1\u0645 [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-25270","post","type-post","status-publish","format-standard","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts\/25270","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/comments?post=25270"}],"version-history":[{"count":0,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts\/25270\/revisions"}],"wp:attachment":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/media?parent=25270"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/categories?post=25270"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/tags?post=25270"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}