เบเปเบฒเบญเบฐเบเบดเบเบฒเบ
เปเบงเบฑเบเปเบเบเปเบเบญเบเบเปเบญเบ, เบเบตเปเบเปเบญเบเบเปเบฒเปเบเบตเบเบเบฒเบเปเบเบฑเบเบงเบฝเบเบญเบฐเบเบดเปเบฅเบ, เบเบทเบเบญเบญเบเปเบเบเบกเบฒเปเบเบทเปเบญเปเบเบฑเบเปเบเบปเปเบฒเบเบฒเบเบซเบเปเบฒเบเปเบฒเบญเบดเบเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบเปเบฅเบฐเบชเบฐเบเบฒเบเบเบตเปเบชเปเบงเบเบเบธเบเบเบปเบ. เบซเบปเบงเบเปเปเบเบตเปเปเบฅเบตเปเบกเบชเบปเบเปเบเบเปเบญเบเปเบเบเบญเบเปเบฅเบตเปเบกเบเบปเปเบเบเบญเบเบเบฒเบเปเบเบตเบเบเบฒเบเบเบฒเบเบเบฝเบเปเบเบผเปเบเบผเบกเบเบญเบเบเปเบญเบ; เปเบเบเบฐเบเบฐเบเบฑเปเบเบเปเบญเบเบฎเบนเปเบชเบถเบเบเบฐเบเบฑเบเปเบเบเบฑเบเบเบฒเบเบเบญเบเบซเบฒเบเบนเปเบเปเบฝเบงเบเบฒเบเบเบตเปเบเบตเบเบตเปเบเบฝเบเบเปเบฝเบงเบเบฑเบเบเบปเบงเปเบญเบ, เบงเบฝเบเบญเบฐเบเบดเปเบฅเบเปเบฅเบฐเปเบเบเบเบฒเบเบเบญเบเบเบงเบเปเบเบปเบฒ. เบเบดเปเบชเบเบฒเบเบเบปเปเบเบเบปเบเบเบงเบเบกเบฑเบเบชเปเบฒเบฅเบฑเบเบเบปเบงเปเบญเบเบเบฑเบเบเบปเบเบขเบนเปเบเบปเบเปเบเบดเบเบเบธเบเบงเบฑเบเบเบตเป: เปเบเปเบเบทเบญเบเบเบธเบเปเบงเบฑเบเปเบเบเปเบเบฒเบเบเปเบฒเปเบฅเบฐเบเปเปเปเบกเปเบเบเบฒเบเบเปเบฒเบซเบผเบฒเบ, เบเปเบญเบเบชเบทเบเบเปเปเบเบญเบเบซเบฒเบขเบนเปเปเบเบชเปเบงเบเบเปเบฒเบเปเบเบทเปเบญเบเบญเบเบซเบฒเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบเบนเปเบเบฝเบ.
เบเบฒเบเบเบฑเบเบเบฑเปเบเบเบฐเบเบดเบเบฑเบเปเบเบงเบเบงเบฒเบกเบเบดเบ
เบชเบฐเบเบฑเบเบเปเบฒเบญเบดเบเปเบกเปเบเบเบฝเบเปเบเปเบซเบเปเบฒ html เบขเบนเปเปเบเปเบงเบฑเบเปเบเบเปเบชเปเบงเบเบเบปเบงเบเบญเบเบเปเบญเบ, เบเปเบญเบเบเบตเปเบเปเบญเบเปเบชเปเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบตเปเบกเบตเบฅเบฒเบเปเบเบฑเบเปเบเบปเปเบฒเปเบเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเป ul. เบกเบตเบเบฒเบเบเบดเบก 20 เบซเบเปเบฒเปเบเปเบฅเบเบฐเปเบงเบฅเบฒ, เบเปเบญเบเปเบฅเบตเปเบกเบเบดเบเบงเปเบฒเบเบตเปเบเปเปเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบเบซเบผเบฒเบเปเบฅเบฐเบเบฑเบเบชเบดเบเปเบเบเบฐเบเบฒเบเบฒเบกเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบฐเบเบงเบเบเบฒเบ. เปเบ stackoverflow, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบชเบฑเบเปเบเบเปเบซเบฑเบเบงเปเบฒเบเบฐเบเบฒเบเบปเบเบเปเบฒเบเบงเบเบซเบผเบฒเบเบเบตเปเปเบซเปเปเบซเบฑเบเบชเบฐเบเบฒเบเบเบตเปเปเบเปเบเบฃเปเบเบฅเปเบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒ, เบชเบฐเบเบฑเปเบเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฝเบ parser เปเบ php, เปเบเบดเปเบเบเบฝเบเปเบเปเปเบเปเบเบเบเปเบฒเบเปเบเบฃเปเบเบฅเป, เปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบเบเปเบฒเบญเบดเบ (เบเบตเปเบขเบนเป SO เบเบปเบเปเบเบดเบเบเบธเบเบกเบทเปเบเบตเปเปเบเบฑเบเปเบเบเบเบตเป: `/users/1`. ), เบชเบฐเบเบฑเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฒเบเปเบเบฑเบเบเบตเปเบเปเบญเบเบเบฒเบเปเบฅเบฐเปเบเบตเปเบกเบกเบฑเบเปเบ SQLite.
เบเบตเปเบชเบฒเบกเบฒเบเปเบญเบตเปเบเบงเปเบฒเบชเบฐเบเบฑเบเบเบตเบชเบญเบ: เบเบฒเบเบฅเบงเบเบฅเบงเบกเบซเบฅเบฒเบเบชเบดเบเบเบฑเบ URL เปเบเบเบฒเบเบฐเบฅเบฒเบ SQLite, เปเบเบดเปเบเปเบเบเบเบตเปเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบปเบเบเบตเปเปเบ HTML. เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบปเปเบเบซเบฒเปเบเบเบเปเบฒเบเปเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบตเป. เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒ เบกเบตเบเบฝเบเปเบเป URLs, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฒเบเบเบปเปเบเบซเบฒเปเบกเปเบเบเบฝเบเปเบเปเบญเบตเบเปเบชเปเบเบงเบเบกเบฑเบ.
เปเบเบเบฑเปเบเบเบญเบเบเบตเปเบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบฐเบเบดเปเบกเปเบเบเบเบฒเบเปเบฅเบฐเบเบฑเบเบเบทเบเปเบเบซเบฒเบกเบฑเบเบซเบผเบฑเบเบเบฒเบเปเบงเบฅเบฒเบเบปเบเบเบฒเบ. เปเบเบเบฑเปเบเบเบญเบเบเบตเป, เบเบฐเบชเบปเบเบเบฒเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบเบเปเบญเบเปเบกเปเบเบซเบผเบฒเบเบเบงเปเบฒเบชเบฒเบกเบเบตเปเบฅเปเบงเปเบฅเบฐเบเปเบญเบเบฎเบนเปเบชเบถเบเบงเปเบฒเบเปเบญเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบเบตเปเบฎเปเบฒเบเปเบฎเบเบเบงเปเบฒเปเบเบปเปเบฒ. เบเบญเบเบเบฒเบเบเบฑเปเบ, เบกเบตเบเบงเบฒเบกเบเบฒเบเบฐเปเบฒเบญเบฑเบเปเบซเบเปเบซเบผเบงเบเบเบตเปเบเบฐเปเบเบฑเบเปเบเบปเปเบฒเบเบญเบเปเบเบฑเบเปเบเปเบฅเบขเบตเบเบตเปเบเปเบญเบเบเปเบฒเบเปเบซเบกเป.
เบชเบฐเบเบฑเบเบเบตเปเบเบฑเบเบชเบฐเปเบซเบก
เบเบฑเบเบซเบฒ
เปเบงเบฑเบเปเบเบเปเปเบซเบกเปเบเบทเบเปเบเบตเปเบกเปเบเบเบเปเบฒเบชเบฑเปเบ console เบเบตเป synchronously เปเบฎเบฑเบเบเบฑเปเบเบเปเปเปเบเบเบตเป:
- เบเบฒเบงเปเบซเบผเบเปเบเบทเปเบญเบซเบฒเปเบเบ URL
- เบเบฑเปเบเบเบธเบเบเบตเปเบเบญเบเบงเปเบฒ HTTPS เบกเบตเบขเบนเปเบซเบผเบทเบเปเป
- เบฎเบฑเบเบชเบฒเบเบงเบฒเบกเบชเปเบฒเบเบฑเบเบเบญเบเปเบงเบฑเบเปเบเบเป
- เปเบซเบผเปเบ HTML เปเบฅเบฐเบชเปเบงเบเบซเบปเบงเบเบทเบเบเบฑเบเบเบถเบเปเบงเปเปเบเบเบฐเบซเบงเบฑเบเบชเบฒเบ "เบเบฑเบเบชเบฐเบเบต".
- เบงเบดเปเบเบฒเบฐเปเบเบทเปเบญเบซเบฒ, เปเบเบเบเบทเป เปเบฅเบฐเบเบณเบญเบฐเบเบดเบเบฒเบ
- เบเบฑเบเบเบถเบเบเปเปเบกเบนเบเปเบชเปเบเปเปเบฅเบฑเบเบเบฑเบเปเบเบเบเปเบฒเบเบซเบฒเบ
เบเบตเปเปเบกเปเบเบเบฝเบเบเปเบเบตเปเบเบฐเบเบฝเบเปเบเปเปเบเบฑเบเบฎเบฑเบเบชเบฒเปเบงเบฑเบเปเบเบเปเปเบฅเบฐเบชเบฐเปเบเบเปเบซเปเบเบงเบเปเบเบปเบฒเบขเบนเปเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเป:
เปเบเปเปเบเบงเบเบงเบฒเบกเบเบดเบเบเบญเบเบเบฒเบเบเบฑเบเบฅเปเบฒเบเบฑเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบ, เบเบฒเบเบเบฑเบเบเบฐเปเบเบเปเบฅเบฐเบเบฒเบเบเบฑเบเบฅเปเบฒเบเบฑเบเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบ, เบฎเบฑเบเบชเบฒเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบซเปเบเบฑเบเบชเบฐเปเบซเบก, เบเปเปเปเบเปเปเบซเบกเบฒเบฐเบเบฑเบ paradigm เบเบตเป. เปเบเบดเบเปเบกเปเบเบงเปเบฒเบเบฝเบเปเบเปเปเบเบตเปเบกเบงเบดเบเบตเบเบฒเบเปเบงเบฑเบเปเบเบเปเปเบเบทเปเบญเปเบเบตเปเบกเบซเบเปเบฒเบเบตเปเบเปเปเบฒเบเบฑเบเบฅเบฐเบซเบฑเบเปเบฅเบฐเบเบฒเบเบเบฑเบเบเบงเบฒเบเปเบเบทเปเบญเบซเบผเบตเบเปเบงเบฑเปเบเบเบฒเบ DDoS เบเบตเปเปเบเบฑเบเปเบเปเบเป.
เปเบเบเบเบปเปเบงเปเบ, เปเบเปเบเบญเบ, เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเป synchronously, เปเบฅเบฐเปเบเบงเบดเบเบตเบเบฒเบเปเบงเบฑเบเปเบเบเปเบเบตเปเบเปเบฒเบเบเบฝเบเปเบเปเบชเบฒเบกเบฒเบเบเบฑเบเบเบถเบ URL เปเบเบทเปเบญเปเบซเป daemon monstrous เบเบฐเบเบดเบเบฑเบเบงเบฝเบเบเบฒเบเบเบฑเบเบซเบกเบปเบเบชเปเบฒเบฅเบฑเบ URLs เบเบฒเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเป. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เปเบเบดเบเปเบกเปเบเบงเปเบฒเปเบเบเบตเปเบเบตเปเบเปเบฒเบงเปเบฒ "เปเบเบง" เบเบตเปเปเบซเปเปเบซเบฑเบเบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบ. เปเบฅเบฐเบเปเบฒเบเบดเบงเบเบทเบเบเบฐเบเบดเบเบฑเบ, เบงเบฝเบเบเบฒเบเบเบฑเบเบซเบกเบปเบเบชเบฒเบกเบฒเบเปเบเปเบเบญเบญเบเปเบฅเบฐเบเบฐเบเบดเบเบฑเบเบขเปเบฒเบเบซเบเปเบญเบ asynchronously.
เบเบฒเบเบเบฑเบเบชเบดเบเปเบ
เบเบฐเบเบดเบเบฑเบเบเบดเบงเปเบฅเบฐเบชเปเบฒเบเบฅเบฐเบเบปเบเปเบซเบเบเบฒเบเบเบตเปเบเบฑเบเปเบเบทเปเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบธเบเปเบเปเบเบงเบฝเบเบเบฒเบเบเบฑเบเบซเบกเบปเบ. เปเบฅเบฐเบเปเบญเบเบขเบฒเบเบฅเบญเบ Redis Stream เบกเบฒเปเบเบฑเบเปเบงเบฅเบฒเบเบปเบเบเบฒเบเปเบฅเปเบง.
เบเบฒเบเบเปเบฒเปเบเป Redis streams เปเบ PHP
เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒ เปเบเบทเปเบญเบเบเบฒเบเบเบญเบเบเบญเบเบเปเบญเบเบเปเปเปเบกเปเบเบซเบเบถเปเบเปเบเบชเบฒเบกเบเบฑเบเปเบซเบเป Symfony, Laravel, Yii, เบเปเบญเบเบขเบฒเบเบเบญเบเบซเบฒเบซเปเบญเบเบชเบฐเบซเบกเบธเบเปเบญเบเบฐเบฅเบฒเบ. เปเบเป, เบเปเบญเบเบงเปเบฒเบกเบฑเบเบซเบฑเบเบญเบญเบ (เปเบเบเบฒเบเบเบงเบเบชเบญเบเบเบฑเปเบเบเปเบฒเบญเบดเบ), เบกเบฑเบเปเบเบฑเบเปเบเบเปเปเปเบเปเบเบตเปเบเบฐเบเบญเบเบซเบฒเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบตเปเบฎเปเบฒเบเปเบฎเบเบเบญเบเบเบธเบเบเบปเบ. เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบเบดเบงเปเบกเปเบเปเบเบฑเบเปเบเบเบเบฒเบเบเบฒเบ 3 commits เบซเปเบฒเบเบตเบเบตเปเบเปเบฒเบเบกเบฒ, เบซเบผเบทเบเบทเบเบเบนเบเบกเบฑเบเบเบฑเบเบเบญเบ.
เบเปเบญเบเปเบเปเบเบดเบเบซเบผเบฒเบเบเปเบฝเบงเบเบฑเบ Symfony เปเบเบฑเบเบเบนเปเบชเบฐเบซเบเบญเบเบชเปเบงเบเบเบฐเบเบญเบเบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบเบชเปเบงเบเบเบธเบเบเบปเบ, เปเบฅเบฐเบเปเบญเบเปเบเปเบเบฒเบเบชเปเบงเบเบเบญเบเบเบงเบเบกเบฑเบเปเบฅเปเบง. เปเบฅเบฐเบเบฒเบเบชเบดเปเบเบเบตเปเบเบฒเบ Laravel เบเบฑเบเบชเบฒเบกเบฒเบเบเบทเบเบเปเบฒเปเบเป, เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบเบปเบงเบขเปเบฒเบ ORM เบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒ, เปเบเบเบเปเปเบกเบตเบเบฒเบเบกเบตเบเบญเบเบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบ.
symfony/messenger
เบเบนเปเบชเบฐเบซเบกเบฑเบเบเปเบฒเบญเบดเบเบเบฑเบเบเบตเปเบเบดเปเบเบเบทเบงเปเบฒเปเบซเบกเบฒเบฐเบชเบปเบกเปเบฅเบฐเปเบเบเบเปเปเบกเบตเบเบฒเบเบชเบปเบเปเบชเปเบเปเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบดเบเบเบฑเปเบเบกเบฑเบ. เปเบเปเบกเบฑเบเปเบเปเบเบฒเบเปเบเบฑเบเบเบงเบฒเบกเบซเบเบธเปเบเบเบฒเบเบซเบผเบฒเบเบเปเปเบเบฑเบ google เบเบปเบงเบขเปเบฒเบเบเบญเบเบเบฒเบเบเปเบฒเปเบเปเบเบญเบ Symfony. เบงเบดเบเบตเบเบฒเบเบฅเบงเบเบฅเบงเบกเบเบฒเบเบเบธเปเบกเบเบญเบเบซเปเบญเบเบฎเบฝเบเบเบตเปเบกเบตเบเบทเปเบเบปเปเบงเปเบ, เบเปเปเบกเบตเบเบงเบฒเบกเบซเบกเบฒเบ, เบฅเบปเบเปเบกเบชเปเบฒเบฅเบฑเบเบเปเปเบเบงเบฒเบก, เปเบฅเบฐเปเบกเปเบเบฐเบเบฑเปเบ Redis?
เปเบญเบเบฐเบชเบฒเบเบขเบนเปเปเบเปเบงเบฑเบเปเบเบเปเบเบฒเบเบเบฒเบเปเบกเปเบเบเปเบญเบเบเปเบฒเบเบฅเบฐเบญเบฝเบ, เปเบเปเบงเปเบฒเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบเบฝเบเปเบเปเปเบเปเบเบทเบเบญเบฐเบเบดเบเบฒเบเบชเปเบฒเบฅเบฑเบ Symfony เปเบเบเปเบเป YML เบเบตเปเบเบงเบเปเบเบปเบฒเบกเบฑเบเปเบฅเบฐเบงเบดเบเบตเบเบฒเบ magic เบญเบทเปเบเปเบชเปเบฒเบฅเบฑเบเบเบฑเบเบเบปเบเบเบตเบเบตเปเบเปเปเปเบกเปเบ symphonist. เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเปเปเบกเบตเบเบงเบฒเบกเบชเบปเบเปเบเปเบเบเบฐเบเบงเบเบเบฒเบเบเบดเบเบเบฑเปเบเบเบปเบงเบกเบฑเบเปเบญเบ, เปเบเบเบชเบฐเปเบเบฒเบฐเปเบเบเปเบงเบเบงเบฑเบเบเบฑเบเบเบตเปเบซเบกเป. เปเบเปเบเปเบญเบเบเปเบญเบเปเบฎเบฑเบเบชเบดเปเบเบเบตเปเปเบเบฑเบเปเบงเบฅเบฒเบเบปเบเบเบฒเบเบเบตเปเบเปเปเบเบฒเบเบเบดเบ.
เบเบฒเบเบเบฐเบเบฒเบเบฒเบกเบซเบฒเบงเบดเบเบตเปเบฎเบฑเบเปเบซเปเบฅเบฐเบเบปเบเบเบฑเบเบเบตเบเบฑเบเปเบเปเบเบเปเบเปเปเบซเบผเปเบ Symfony เบเปเปเปเบกเปเบเบงเบฝเบเบเบตเปเบซเบเบธเปเบเบเบฒเบเบเบตเปเบชเบธเบเบชเปเบฒเบฅเบฑเบเปเบชเบฑเปเบเบเบฒเบเบเบตเปเปเบเบฑเปเบเบเบฑเบ:
เบซเบผเบฑเบเบเบฒเบ delving เปเบเบปเปเบฒเปเบเปเบเบเบฑเบเบซเบกเบปเบเบเบตเปเปเบฅเบฐเบเบฐเบเบฒเบเบฒเบกเปเบฎเบฑเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบเปเบงเบเบกเบทเบเบญเบเบเปเบฒเบเบฐเปเบเบปเปเบฒ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบกเบฒเบชเบฐเบซเบฅเบธเบเบงเปเบฒเบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบฎเบฑเบเบเบฒเบเบเบฐเปเบเบเบเบญเบ crutches เปเบฅเบฐเบเบฑเบเบชเบดเบเปเบเบเบตเปเบเบฐเบเบฐเบเบฒเบเบฒเบกเบญเบฑเบเบญเบทเปเบ.
illuminated/เบเบดเบง
เบกเบฑเบเปเบเปเบซเบฑเบเบญเบญเบเบงเปเบฒเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบตเปเบเบดเบเปเบซเบเปเบเบเบฑเบเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบเบเบญเบ Laravel เปเบฅเบฐเบเบงเบฒเบกเปเบเบดเปเบเบเบฒเบญเบฒเปเบชเบญเบทเปเบเป, เบเบฑเปเบเบเบฑเปเบเบเปเบญเบเบเปเปเปเบเปเปเบเปเปเบงเบฅเบฒเบซเบผเบฒเบเบเบฑเบเบกเบฑเบ: เบเปเบญเบเบเบดเบเบเบฑเปเบเบกเบฑเบ, เปเบเบดเปเบเบกเบฑเบ, เปเบซเบฑเบเบเบงเบฒเบกเปเบเบดเปเบเบเบฒเบญเบฒเปเบชเปเบฅเบฐเบฅเบถเบเบกเบฑเบเบญเบญเบ.
yiisoft/yii2-queue
เบเบต, เปเบเบเบตเปเบเบตเปเบกเบฑเบเปเบเปเบเบทเบเบชเบปเบกเบกเบธเบเบเบฑเบเบเบตเบเบฒเบเบเบทเป, เบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบ, เบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบตเปเปเบเบฑเปเบเบเบฑเบเบเบฑเบ Yii2. เบเปเบญเบเบเปเบญเบเปเบเปเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบเบตเปเปเบฅเบฐเบกเบฑเบเบเปเปเปเบกเปเบเบชเบดเปเบเบเบตเปเบเปเปเบเบต, เปเบเปเบเปเบญเบเบเปเปเปเบเปเบเบดเบเบเปเบฝเบงเบเบฑเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒเบกเบฑเบเบเบถเปเบเบเบฑเบ Yii2 เบขเปเบฒเบเบชเบปเบกเบเบนเบ.
เบชเปเบงเบเบเบตเปเปเบซเบผเบทเบญ
เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเบญเบทเปเบเบเบตเปเบเปเบญเบเบเบปเบเปเบ GitHub เปเบกเปเบเปเบเบเบเบฒเบเบเบตเปเบเปเปเบซเบเปเบฒเปเบเบทเปเบญเบเบท, เบฅเปเบฒเบชเบฐเปเบซเบกเปเบฅเบฐเบเบทเบเบเบฐเบเบดเปเบกเปเบงเปเปเบเบเบเปเปเบกเบตเบฎเบนเบเบเบฒเบง, เบชเปเบญเบกเปเบฅเบฐเบเปเบฒเบซเบกเบฑเปเบเบชเบฑเบเบเบฒเบเปเบฒเบเบงเบเบซเบฅเบฒเบ.
เบเบฑเบเปเบเบเบตเป symfony/messenger, เบฅเบฒเบเบฅเบฐเบญเบฝเบเบเปเบฒเบเบงเบดเบเบฒเบเบฒเบ
เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเปเบญเบโเบเบดเบโเบญเบญเบโเบซเปเบญเบโเบชเบฐโเบซเบกเบธเบโเบเบตเปโเปเบฅเบฐโ, เบซเบผเบฑเบโเบเบฒเบโเบเบตเปโเปเบเปโเปเบงโเบฅเบฒโเบซเบผเบฒเบโเบเบงเปเบฒโ, เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบชเบฒโเบกเบฒเบโเปเบฎเบฑเบโเปเบเปโ. เบกเบฑเบเปเบเปเบซเบฑเบเบญเบญเบเบงเปเบฒเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบกเปเบเบเปเบญเบเบเปเบฒเบ concise เปเบฅเบฐเบเปเบฒเบเบเบฒเบ. เปเบเบทเปเบญเปเบฎเบฑเบเปเบซเปเบฅเบปเบเปเบกเบเบฑเบเบเบต, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบชเปเบฒเบเปเบฎเบเบเบฒเบเบเบฐเบซเบเบฒเบเบเปเบญเบ, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒ ... เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเบงเบโเบเบฐโเบกเบตโเบขเบฒเบโเบฅเบปเบโเบซเบผเบฒเบโเปเบฅเบฐโเบกเบต handlers เบเบตเปโเปเบเบโเบเปเบฒเบโเบเบฑเบ.
เบเบฝเบเปเบเปเบชเบญเบเบชเบฒเบกเบเบฑเปเบเบเบญเบ:
- เบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบเบเบปเบงเบเบฑเบเบเบฒเบเบเปเปเบเบงเบฒเบกเบเบตเปเบเบงเบเบเบฐเบชเบฒเบกเบฒเบเปเบเบซเบฒเปเบเปเบเปเบฒเบเป
- เบเบงเบเปเบฎเบปเบฒเบซเปเปเบเบงเบเบกเบฑเบเปเบงเปเปเบ HandlerDscriptor (เบซเปเบญเบเบฎเบฝเบเบเบฒเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบ)
- เบเบงเบเปเบฎเบปเบฒเบซเปเป "เบเบปเบงเบญเบฐเบเบดเบเบฒเบ" เปเบซเบผเบปเปเบฒเบเบตเปเบขเบนเปเปเบเบเบปเบงเบขเปเบฒเบ HandlersLocator
- เบเบฒเบเปเบเบตเปเบก HandlersLocator เปเบชเปเบเบปเบงเบขเปเบฒเบ MessageBus
- เบเบงเบเปเบฎเบปเบฒเบเปเบฒเบเบเบธเบเบเบญเบ 'SenderInterface' เปเบซเปเบเบฑเบ SenderLocator, เปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเปเบญเบเปเบเบซเปเบญเบเบฎเบฝเบ 'RedisTransport', เปเบเบดเปเบเบเบทเบเบเบฑเปเบเบเปเบฒเปเบเบเบฒเบเบเบตเปเบเบฑเบเปเบเบ.
- เบเบฒเบเปเบเบตเปเบก SenderLocator เปเบชเปเบเบปเบงเบขเปเบฒเบ MessageBus
MessageBus เบกเบตเบงเบดเบเบตเบเบฒเบ `-> dispatch()` เบเบตเปเบเบญเบเบซเบฒเบเบปเบงเบเบฑเบเบเบฒเบเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบกเปเบ HandlersLocator เปเบฅเบฐเบชเบปเปเบเบเปเปเบเบงเบฒเบกเปเบซเปเบเบงเบเปเบเบปเบฒ, เปเบเบเปเบเป `SenderInterface` เบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบเปเบเบทเปเบญเบชเบปเปเบเบเปเบฒเบเบฅเบปเบเปเบก (เบชเบฒเบ Redis).
เปเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบนเปเบเบญเบเปเบเบเปเบเบต (เปเบเบเปเบฅเบฐเบเบตเบเบตเป php-di), เบกเบฑเบเบเบฑเบเบซเบกเบปเบเบเบตเปเบชเบฒเบกเบฒเบเบเบทเบเบเบฑเปเบเบเปเบฒเปเบเบฑเปเบเบเบตเป:
CONTAINER_REDIS_TRANSPORT_SECRET => function (ContainerInterface $c) {
return new RedisTransport(
$c->get(CONTAINER_REDIS_STREAM_CONNECTION_SECRET),
$c->get(CONTAINER_SERIALIZER))
;
},
CONTAINER_REDIS_TRANSPORT_LOG => function (ContainerInterface $c) {
return new RedisTransport(
$c->get(CONTAINER_REDIS_STREAM_CONNECTION_LOG),
$c->get(CONTAINER_SERIALIZER))
;
},
CONTAINER_REDIS_STREAM_RECEIVER_SECRET => function (ContainerInterface $c) {
return new RedisReceiver(
$c->get(CONTAINER_REDIS_STREAM_CONNECTION_SECRET),
$c->get(CONTAINER_SERIALIZER)
);
},
CONTAINER_REDIS_STREAM_RECEIVER_LOG => function (ContainerInterface $c) {
return new RedisReceiver(
$c->get(CONTAINER_REDIS_STREAM_CONNECTION_LOG),
$c->get(CONTAINER_SERIALIZER)
);
},
CONTAINER_REDIS_STREAM_BUS => function (ContainerInterface $c) {
$sendersLocator = new SendersLocator([
AppMessagesSecretJsonMessages::class => [CONTAINER_REDIS_TRANSPORT_SECRET],
AppMessagesDaemonLogMessage::class => [CONTAINER_REDIS_TRANSPORT_LOG],
], $c);
$middleware[] = new SendMessageMiddleware($sendersLocator);
return new MessageBus($middleware);
},
CONTAINER_REDIS_STREAM_CONNECTION_SECRET => function (ContainerInterface $c) {
$host = 'bu-02-redis';
$port = 6379;
$dsn = "redis://$host:$port";
$options = [
'stream' => 'secret',
'group' => 'default',
'consumer' => 'default',
];
return Connection::fromDsn($dsn, $options);
},
CONTAINER_REDIS_STREAM_CONNECTION_LOG => function (ContainerInterface $c) {
$host = 'bu-02-redis';
$port = 6379;
$dsn = "redis://$host:$port";
$options = [
'stream' => 'log',
'group' => 'default',
'consumer' => 'default',
];
return Connection::fromDsn($dsn, $options);
},
เบเบตเปเบเบตเปเปเบเบปเปเบฒเบชเบฒเบกเบฒเบเปเบซเบฑเบเปเบเปเบงเปเบฒเปเบ SenderLocator เบเบงเบเปเบฎเบปเบฒเปเบเปเบกเบญเบเบซเบกเบฒเบ "เบเบฒเบเบเบปเบเบชเบปเปเบ" เบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบชเปเบฒเบฅเบฑเบเบชเบญเบเบเปเปเบเบงเบฒเบกเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ, เปเบเปเบฅเบฐเบเบปเบเบกเบตเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบญเบเบเบปเบเปเบญเบเบเบฑเบเบชเบฒเบเบเปเปเบฒเบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบ.
เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบชเปเบฒเบเปเบเบเบเบฒเบ demo เปเบเบเบเปเบฒเบเบซเบฒเบเบชเบฐเปเบเบเปเบซเปเปเบซเบฑเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบญเบเบชเบฒเบก daemons เบชเบทเปเบชเบฒเบเบเบฑเบเบเบฑเบเปเบฅเบฐเบเบฑเบเปเบเบเปเบเปเบฅเบปเบเปเบกเบเปเปเปเบเบเบตเป:
เปเบเปเบเปเบญเบเบเบฐเบชเบฐเปเบเบเปเบซเปเปเบเบปเปเบฒเบฎเบนเปเบงเปเบฒเบเบนเปเบเปเบฅเบดเปเบเบเบชเบฒเบกเบฒเบเบเบฑเบเปเบเบเบชเปเบฒเบเปเบเปเปเบเบงเปเบ:
use AppMessagesDaemonLogMessage;
use SymfonyComponentMessengerHandlerHandlerDescriptor;
use SymfonyComponentMessengerHandlerHandlersLocator;
use SymfonyComponentMessengerMessageBus;
use SymfonyComponentMessengerMiddlewareHandleMessageMiddleware;
use SymfonyComponentMessengerMiddlewareSendMessageMiddleware;
use SymfonyComponentMessengerTransportSenderSendersLocator;
require_once __DIR__ . '/../vendor/autoload.php';
/** @var PsrContainerContainerInterface $container */
$container = require_once('config/container.php');
$handlers = [
DaemonLogMessage::class => [
new HandlerDescriptor(
function (DaemonLogMessage $m) {
error_log('DaemonLogHandler: message handled: / ' . $m->getMessage());
},
['from_transport' => CONTAINER_REDIS_TRANSPORT_LOG]
)
],
];
$middleware = [];
$middleware[] = new HandleMessageMiddleware(new HandlersLocator($handlers));
$sendersLocator = new SendersLocator(['*' => [CONTAINER_REDIS_TRANSPORT_LOG]], $container);
$middleware[] = new SendMessageMiddleware($sendersLocator);
$bus = new MessageBus($middleware);
$receivers = [
CONTAINER_REDIS_TRANSPORT_LOG => $container->get(CONTAINER_REDIS_STREAM_RECEIVER_LOG),
];
$w = new SymfonyComponentMessengerWorker($receivers, $bus, $container->get(CONTAINER_EVENT_DISPATCHER));
$w->run();
เบเบฒเบเบเปเบฒเปเบเปเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบเบเบตเปเปเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ
เปเบเบเปเบเปเบเบฐเบเบดเบเบฑเบเบฅเบปเบเปเบกเปเบ backend เบเบญเบเบเปเบญเบ, เบเปเบญเบเปเบเบเบเบฑเปเบเบเบญเบเบเบญเบเบเบธเบเบเบปเบเบญเบญเบเบเบฒเบเบเปเบฒเบชเบฑเปเบ synchronous เปเบเบปเปเบฒเปเบฅเบฐเบชเปเบฒเบเบเบปเบงเบเบฑเบเบเบฒเบเปเบเบเบเปเบฒเบเบซเบฒเบ, เปเบเปเบฅเบฐเบเบปเบเปเบฎเบฑเบเบชเบดเปเบเบเบญเบเบเบปเบเปเบญเบ.
เบเปเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบตเปเบกเปเบงเบฑเบเปเบเบเปเปเบซเบกเปเปเบเบเบฒเบเบเปเปเบกเบนเบเปเบเบดเปเบเบเบทเบงเปเบฒเบเบตเป:
เปเบฅเบฐเบเบฑเบเบเบตเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบกเบฑเบเปเบเปเบเบฒเบเปเบเบฑเบเบเปเบฒเบเบเบถเปเบเบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบเบเปเบญเบเบเบตเปเบเบฐเปเบเบตเปเบกเบซเบเปเบฒเบเบตเปเปเบซเบกเป, เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบเบปเบงเบขเปเบฒเบ, เบเบฒเบเบชเบฐเบเบฑเบเปเบฅเบฐเปเบเบ Rss. เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒ เบเบฐเบเบงเบเบเบฒเบเบเบตเปเบเบฑเบเบเปเบญเบเบเบฒเบเปเบเบทเปเบญเบซเบฒเบเบปเปเบเบชเบฐเบเบฑเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ RSS link extractor handler, เปเบเบฑเปเบ WebsiteIndexHistoryPersistor, เบเบญเบเบเปเปเบเบงเบฒเบก "Content/HtmlContent", เบเบฐเบกเบงเบเบเบปเบเบกเบฑเบเปเบฅเบฐเบชเบปเปเบเบเปเปเบเบงเบฒเบกเบเบตเปเบเปเบญเบเบเบฒเบเบเบฒเบกเบเปเปเบเบญเบเบกเบฑเบเบเบทเปเบกเบญเบตเบ.
เปเบเบเบตเปเบชเบธเบ, เบเบงเบเปเบฎเบปเบฒเบชเบดเปเบเบชเบธเบเบฅเบปเบเบเปเบงเบ daemon เบซเบผเบฒเบ, เปเบเปเบฅเบฐเบเบปเบเบฎเบฑเบเบชเบฒเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฝเบเปเบเปเบเบฑเบเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเบตเปเบเปเบฒเปเบเบฑเบ. เบชเปเบฒเบฅเบฑเบเบเบปเบงเบขเปเบฒเบ, เบเบตเบเบตเบชเบฒเบ เบเบปเบงเบเบงเบฒเบเปเบงเบฑเบ เบเบฐเบเบญเบเบกเบตเบเบปเบงเบเบฑเบเบเบฒเบเบเบฑเบเบซเบกเบปเบเบเบตเปเบฎเบฝเบเบฎเปเบญเบเปเบซเปเปเบเบซเบฒเบญเบดเบเปเบเบตเปเบเบฑเบเบชเปเบฒเบฅเบฑเบเปเบเบทเปเบญเบซเบฒ, เปเบฅเบฐ daemon เบเบปเบเบขเบนเป เบเบทเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบ.
เปเบเบเบฑเบเบเบธเบเบฑเบ, เปเบเบเบเบตเปเบเบฐเปเบฅเบทเบญเบเบเบฒเบเบเบฒเบเบเปเปเบกเบนเบ, ids เบเบตเปเบเปเบญเบเบเบฒเบเบซเบผเบฑเบเบเบฒเบเบเบฒเบเปเบชเปเปเบเบ persister เปเบกเปเบเบเบฝเบเปเบเปเบชเบปเปเบเบเปเบฒเบเบฅเบปเบเปเบกเปเบเบซเบฒเบเบนเปเบเบฑเบเบเบฒเบเบเบตเปเบชเบปเบเปเบเบเบฑเบเบซเบกเบปเบ.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com