PHP เชฌเซ‡เช•เชเชจเซเชกเชจเซ‡ Redis เชธเซเชŸเซเชฐเซ€เชฎ เชฌเชธเชฎเชพเช‚ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเชตเซเช‚ เช…เชจเซ‡ เชซเซเชฐเซ‡เชฎเชตเชฐเซเช•-เชธเซเชตเชคเช‚เชคเซเชฐ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชชเชธเช‚เชฆ เช•เชฐเชตเซ€

PHP เชฌเซ‡เช•เชเชจเซเชกเชจเซ‡ Redis เชธเซเชŸเซเชฐเซ€เชฎ เชฌเชธเชฎเชพเช‚ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเชตเซเช‚ เช…เชจเซ‡ เชซเซเชฐเซ‡เชฎเชตเชฐเซเช•-เชธเซเชตเชคเช‚เชคเซเชฐ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชชเชธเช‚เชฆ เช•เชฐเชตเซ€

เชซเซ‹เชฐเชตเชฐเซเชก

เชฎเชพเชฐเซ€ เชตเซ‡เชฌเชธเชพเช‡เชŸ, เชœเซ‡ เชนเซเช‚ เชเช• เชถเซ‹เช– เชคเชฐเซ€เช•เซ‡ เชšเชฒเชพเชตเซเช‚ เช›เซเช‚, เชคเซ‡ เชฐเชธเชชเซเชฐเชฆ เชนเซ‹เชฎ เชชเซ‡เชœ เช…เชจเซ‡ เชตเซเชฏเช•เซเชคเชฟเช—เชค เชธเชพเช‡เชŸเซเชธเชจเซ‡ เชนเซ‹เชธเซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชกเชฟเชเชพเช‡เชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡. เชฎเชพเชฐเซ€ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช— เชธเชซเชฐเชจเซ€ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เชœ เช† เชตเชฟเชทเชฏ เชฎเชจเซ‡ เชฐเชธ เชฒเซ‡เชตเชพ เชฒเชพเช—เซเชฏเซ‹; เชคเซ‡ เช•เซเชทเชฃเซ‡ เชนเซเช‚ เชเชตเชพ เชฎเชนเชพเชจ เชตเซเชฏเชพเชตเชธเชพเชฏเชฟเช•เซ‹เชจเซ‡ เชถเซ‹เชงเซ€เชจเซ‡ เช†เช•เชฐเซเชทเชฟเชค เชฅเชฏเซ‹ เช•เซ‡ เชœเซ‡เช“ เชชเซ‹เชคเชพเชจเชพ เชตเชฟเชถเซ‡, เชคเซ‡เชฎเชจเชพ เชถเซ‹เช– เช…เชจเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธ เชตเชฟเชถเซ‡ เชฒเช–เซ‡ เช›เซ‡. เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เชฎเชจเซ‡ เชถเซ‹เชงเชตเชพเชจเซ€ เช†เชฆเชค เช†เชœเซ‡ เชชเชฃ เช›เซ‡: เชฒเช—เชญเช— เชฆเชฐเซ‡เช• เชตเซเชฏเชตเชธเชพเชฏเชฟเช• เช…เชจเซ‡ เช–เซ‚เชฌ เชœ เชตเซเชฏเชตเชธเชพเชฏเชฟเช• เชธเชพเช‡เชŸ เชชเชฐ เชจเชนเซ€เช‚, เชนเซเช‚ เชฒเซ‡เช–เช•เซ‹เชจเซ€ เชฒเชฟเช‚เช•เซเชธเชจเซ€ เชถเซ‹เชงเชฎเชพเช‚ เชซเซ‚เชŸเชฐ เชœเซ‹เชตเชพเชจเซเช‚ เชšเชพเชฒเซ เชฐเชพเช–เซเช‚ เช›เซเช‚.

เชตเชฟเชšเชพเชฐเชจเซ‹ เช…เชฎเชฒ

เชชเซเชฐเชฅเชฎ เชธเช‚เชธเซเช•เชฐเชฃ เชฎเชพเชฐเซ€ เชตเซเชฏเช•เซเชคเชฟเช—เชค เชตเซ‡เชฌเชธเชพเช‡เชŸ เชชเชฐ เชฎเชพเชคเซเชฐ เชเช• HTML เชชเซƒเชทเซเช  เชนเชคเซเช‚, เชœเซเชฏเชพเช‚ เชฎเซ‡เช‚ เชธเชนเซ€เช“ เชธเชพเชฅเซ‡เชจเซ€ เชฒเชฟเช‚เช•เซเชธ ul เชธเซ‚เชšเชฟเชฎเชพเช‚ เชฎเซ‚เช•เซ€ เชนเชคเซ€. เชธเชฎเชฏเชพเช‚เชคเชฐเซ‡ 20 เชชเซƒเชทเซเช เซ‹ เชŸเชพเช‡เชช เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชฎเซ‡เช‚ เชตเชฟเชšเชพเชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซเชฏเซเช‚ เช•เซ‡ เช† เช–เซ‚เชฌ เช…เชธเชฐเช•เชพเชฐเช• เชจเชฅเซ€ เช…เชจเซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚. เชธเซเชŸเซ‡เช•เช“เชตเชฐเชซเซเชฒเซ‹ เชชเชฐ, เชฎเซ‡เช‚ เชœเซ‹เชฏเซเช‚ เช•เซ‡ เช˜เชฃเชพ เชฒเซ‹เช•เซ‹ เชคเซ‡เชฎเชจเซ€ เชชเซเชฐเซ‹เชซเชพเช‡เชฒเชฎเชพเช‚ เชธเชพเช‡เชŸเซเชธ เชธเซ‚เชšเชตเซ‡ เช›เซ‡, เชคเซ‡เชฅเซ€ เชฎเซ‡เช‚ php เชฎเชพเช‚ เชเช• เชชเชพเชฐเซเชธเชฐ เชฒเช–เซเชฏเซเช‚, เชœเซ‡ เชซเช•เซเชค เชชเซเชฐเชฅเชฎเชฅเซ€ เชถเชฐเซ‚ เช•เชฐเซ€เชจเซ‡ เชชเซเชฐเซ‹เชซเชพเช‡เชฒเซเชธเชฎเชพเช‚เชฅเซ€ เชชเชธเชพเชฐ เชฅเชฏเซเช‚ (SO เชชเชฐ เช†เชœ เชธเซเชงเซ€เชจเชพ เชธเชฐเชจเชพเชฎเชพเช‚ เช†เชจเชพ เชœเซ‡เชตเชพ เช›เซ‡: `/users/1` ), เช‡เชšเซเช›เชฟเชค เชŸเซ…เช—เชฎเชพเช‚เชฅเซ€ เชฒเชฟเช‚เช•เซเชธ เช•เชพเชขเซ€ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ SQLite เชฎเชพเช‚ เช‰เชฎเซ‡เชฐเซเชฏเซเช‚.

เช†เชจเซ‡ เชฌเซ€เชœเซเช‚ เชธเช‚เชธเซเช•เชฐเชฃ เช•เชนเซ€ เชถเช•เชพเชฏ: SQLite เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚ เชนเชœเชพเชฐเซ‹ URL เชจเซ‹ เชธเช‚เช—เซเชฐเชน, เชœเซ‡เชฃเซ‡ HTML เชฎเชพเช‚ เชธเซเชฅเชฟเชฐ เชธเซ‚เชšเชฟเชจเซเช‚ เชธเซเชฅเชพเชจ เชฒเซ€เชงเซเช‚. เชฎเซ‡เช‚ เช† เชธเซ‚เชšเชฟ เชชเชฐ เชเช• เชธเชฐเชณ เชถเซ‹เชง เช•เชฐเซ€. เช•เชพเชฐเชฃ เช•เซ‡ เชคเซเชฏเชพเช‚ เชซเช•เซเชค URL เชนเชคเชพ, เชชเช›เซ€ เชถเซ‹เชง เชซเช•เซเชค เชคเซ‡เชฎเชจเชพ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เชนเชคเซ€.

เช† เชคเชฌเช•เซเช•เซ‡ เชฎเซ‡เช‚ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช›เซ‹เชกเซ€ เชฆเซ€เชงเซ‹ เช…เชจเซ‡ เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏ เชชเช›เซ€ เชคเซ‡เชจเชพ เชชเชฐ เชชเชพเช›เซ‹ เชซเชฐเซเชฏเซ‹. เช† เชคเชฌเช•เซเช•เซ‡, เชฎเชพเชฐเซ‹ เช•เชพเชฐเซเชฏ เช…เชจเซเชญเชต เชคเซเชฐเชฃ เชตเชฐเซเชทเชฅเซ€ เชตเชงเซเชจเซ‹ เชนเชคเซ‹ เช…เชจเซ‡ เชฎเชจเซ‡ เชฒเชพเช—เซเชฏเซเช‚ เช•เซ‡ เชนเซเช‚ เช•เช‚เชˆเช• เชตเชงเซ เช—เช‚เชญเซ€เชฐ เช•เชฐเซ€ เชถเช•เซเช‚ เช›เซเช‚. เช† เช‰เชชเชฐเชพเช‚เชค, เชชเซเชฐเชฎเชพเชฃเชฎเชพเช‚ เชจเชตเซ€ เชคเช•เชจเซ€เช•เซ‹เชฎเชพเช‚ เชจเชฟเชชเซเชฃเชคเชพ เชฎเซ‡เชณเชตเชตเชพเชจเซ€ เชฎเซ‹เชŸเซ€ เช‡เชšเซเช›เชพ เชนเชคเซ€.

เช†เชงเซเชจเชฟเช• เชธเช‚เชธเซเช•เชฐเชฃ

เช† เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชกเซ‹เช•เชฐเชฎเชพเช‚ เชคเซˆเชจเชพเชค, เชกเซ‡เชŸเชพเชฌเซ‡เช mongoDb เชฎเชพเช‚ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹, เช…เชจเซ‡ เชคเชพเชœเซ‡เชคเชฐเชฎเชพเช‚ เชœ, เชฎเซ‚เชณเซ‹ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹, เชœเซ‡ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เชซเช•เซเชค เช•เซ‡เชถเซ€เช‚เช— เชฎเชพเชŸเซ‡ เชนเชคเซ‹. PHP เชฎเชพเช‡เช•เซเชฐเซ‹เชซเซเชฐเซ‡เชฎเชตเชฐเซเช•เชฎเชพเช‚เชฅเซ€ เชเช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช†เชงเชพเชฐ เชคเชฐเซ€เช•เซ‡ เชฅเชพเชฏ เช›เซ‡.

เชธเชฎเชธเซเชฏเชพ

เชจเชตเซ€ เชธเชพเช‡เชŸเซเชธ เช•เชจเซเชธเซ‹เชฒ เช•เชฎเชพเชจเซเชก เชฆเซเชตเชพเชฐเชพ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชœเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชธ เชฐเซ€เชคเซ‡ เชจเซ€เชšเซ‡เชจเชพ เช•เชฐเซ‡ เช›เซ‡:

  • URL เชฆเซเชตเชพเชฐเชพ เชธเชพเชฎเช—เซเชฐเซ€ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ‡ เช›เซ‡
  • HTTPS เช‰เชชเชฒเชฌเซเชง เชนเชคเซเช‚ เช•เซ‡ เช•เซ‡เชฎ เชคเซ‡ เชฆเชฐเซเชถเชพเชตเชคเซ‹ เชงเซเชตเชœ เชธเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡
  • เชตเซ‡เชฌเชธเชพเช‡เชŸเชจเซ‹ เชธเชพเชฐ เชธเชพเชšเชตเซ‡ เช›เซ‡
  • เชธเซเชคเซเชฐเซ‹เชค HTML เช…เชจเซ‡ เชนเซ‡เชกเชฐเซ‹ "เช‡เชจเซเชกเซ‡เช•เซเชธเซ€เช‚เช—" เช‡เชคเชฟเชนเชพเชธเชฎเชพเช‚ เชธเชพเชšเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡
  • เชธเชพเชฎเช—เซเชฐเซ€เชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ‡ เช›เซ‡, เชถเซ€เชฐเซเชทเช• เช…เชจเซ‡ เชตเชฐเซเชฃเชจ เช…เชฐเซเช• เช•เชฐเซ‡ เช›เซ‡
  • เชกเซ‡เชŸเชพเชจเซ‡ เช…เชฒเช— เชธเช‚เช—เซเชฐเชนเชฎเชพเช‚ เชธเชพเชšเชตเซ‡ เช›เซ‡

เช† เชซเช•เซเชค เชธเชพเช‡เชŸเซเชธเชจเซ‡ เชธเซเชŸเซ‹เชฐ เช•เชฐเชตเชพ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ‡ เชธเซ‚เชšเชฟเชฎเชพเช‚ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเซ‚เชฐเชคเซเช‚ เชนเชคเซเช‚:

PHP เชฌเซ‡เช•เชเชจเซเชกเชจเซ‡ Redis เชธเซเชŸเซเชฐเซ€เชฎ เชฌเชธเชฎเชพเช‚ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเชตเซเช‚ เช…เชจเซ‡ เชซเซเชฐเซ‡เชฎเชตเชฐเซเช•-เชธเซเชตเชคเช‚เชคเซเชฐ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชชเชธเช‚เชฆ เช•เชฐเชตเซ€

เชชเชฐเช‚เชคเซ เชฆเชฐเซ‡เช• เชตเชธเซเชคเซเชจเซเช‚ เช†เชชเชฎเซ‡เชณเซ‡ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพ, เชตเชฐเซเช—เซ€เช•เชฐเชฃ เช…เชจเซ‡ เช•เซเชฐเชฎเชพเช‚เช•เชฟเชค เช•เชฐเชตเชพเชจเซ‹ เชตเชฟเชšเชพเชฐ, เชฆเชฐเซ‡เช• เชตเชธเซเชคเซเชจเซ‡ เช…เชฆเซเชฏเชคเชจ เชฐเชพเช–เชตเชพ, เช† เชฆเชพเช–เชฒเชพเชฎเชพเช‚ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เชฌเช‚เชง เชฌเซ‡เชธเชคเซ‹ เชจเชฅเซ€. เชธเช‚เชญเชตเชฟเชค DDoS เชจเซ‡ เชŸเชพเชณเชตเชพ เชฎเชพเชŸเซ‡ เชชเซƒเชทเซเช เซ‹เชจเซ‡ เชœเชฐเซ‚เชฐเซ€ เช•เซ‹เชก เชกเซเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช…เชจเซ‡ เช…เชตเชฐเซ‹เชงเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชซเช•เซเชค เชตเซ‡เชฌ เชชเชฆเซเชงเชคเชฟ เช‰เชฎเซ‡เชฐเชตเซ€.

เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เช…เชฒเชฌเชคเซเชค, เชฌเชงเซเช‚ เชธเชฟเช‚เช•เซเชฐเชจเชธ เชฐเซ€เชคเซ‡ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡, เช…เชจเซ‡ เชตเซ‡เชฌ เชชเชฆเซเชงเชคเชฟเชฎเชพเช‚ เชคเชฎเซ‡ เชซเช•เซเชค URL เชจเซ‡ เชธเชพเชšเชตเซ€ เชถเช•เซ‹ เช›เซ‹ เชœเซ‡เชฅเซ€ เชฐเชพเช•เซเชทเชธเซ€ เชกเชฟเชฎเชจ เชธเซ‚เชšเชฟเชฎเชพเช‚เชฅเซ€ URL เชฎเชพเชŸเซ‡เชจเชพ เชคเชฎเชพเชฎ เช•เชพเชฐเซเชฏเซ‹ เช•เชฐเซ‡. เชชเชฐเช‚เชคเซ เชคเซ‡เชฎ เช›เชคเชพเช‚, เช…เชนเซ€เช‚ เชชเชฃ "เช•เชคเชพเชฐ" เชถเชฌเซเชฆ เชชเซ‹เชคเชพเชจเซ‡ เชธเซ‚เชšเชตเซ‡ เช›เซ‡. เช…เชจเซ‡ เชœเซ‹ เช•เชคเชพเชฐ เชฒเชพเช—เซ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซ‹ เชชเช›เซ€ เชฌเชงเชพ เช•เชพเชฐเซเชฏเซ‹เชจเซ‡ เชตเชฟเชญเชพเชœเชฟเชค เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ เช…เชจเซ‡ เช“เช›เชพเชฎเชพเช‚ เช“เช›เชพ เช…เชธเซเชฎเซ‡เชณ เชฐเซ€เชคเซ‡ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เชจเชฟเชฐเซเชฃเชฏ

เชคเชฎเชพเชฎ เช•เชพเชฐเซเชฏเซ‹เชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เชคเชพเชฐเซ‹เชจเซ‹ เช…เชฎเชฒ เช•เชฐเซ‹ เช…เชจเซ‡ เช‡เชตเซ‡เชจเซเชŸ-เช†เชงเชพเชฐเชฟเชค เชธเชฟเชธเซเชŸเชฎ เชฌเชจเชพเชตเซ‹. เช…เชจเซ‡ เชนเซเช‚ เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏเชฅเซ€ เชฐเซ‡เชกเชฟเชธ เชธเซเชŸเซเชฐเซ€เชฎเซเชธ เช…เชœเชฎเชพเชตเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚.

PHP เชฎเชพเช‚ Redis เชธเซเชŸเซเชฐเซ€เชฎเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹

เช•เชพเชฐเชฃ เช•เซ‡ เชฎเชพเชฐเซเช‚ เชฎเชพเชณเช–เซเช‚ เชคเซเชฐเชฃ เชœเชพเชฏเชจเซเชŸเซเชธ เชธเชฟเชฎเซเชซเซ‹เชจเซ€, เชฒเชพเชฐเชพเชตเซ‡เชฒ, เชฏเซ€เช†เชˆเชฎเชพเช‚เชฅเซ€ เชเช• เชจเชฅเซ€, เชคเซ‡เชฅเซ€ เชนเซเช‚ เชเช• เชธเซเชตเชคเช‚เชคเซเชฐ เชชเซเชธเซเชคเช•เชพเชฒเชฏ เชถเซ‹เชงเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚. เชชเชฐเช‚เชคเซ, เชœเซ‡เชฎ เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡ (เชชเซเชฐเชฅเชฎ เชชเชฐเซ€เช•เซเชทเชพ เชชเชฐ), เชตเซเชฏเช•เซเชคเชฟเช—เชค เช—เช‚เชญเซ€เชฐ เชชเซเชธเซเชคเช•เชพเชฒเชฏเซ‹ เชถเซ‹เชงเชตเชพเชจเซเช‚ เช…เชถเช•เซเชฏ เช›เซ‡. เช•เชคเชพเชฐเซ‹เชจเซ‡ เชฒเช—เชคเซ€ เชฆเชฐเซ‡เช• เชตเชธเซเชคเซ เช•เชพเช‚ เชคเซ‹ เชชเชพเช‚เชš เชตเชฐเซเชท เชชเชนเซ‡เชฒเชพ 3 เช•เชฎเชฟเชŸเชจเซ‹ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เช›เซ‡, เช…เชฅเชตเชพ เชซเซเชฐเซ‡เชฎเชตเชฐเซเช• เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒเซ€ เช›เซ‡.

เชฎเซ‡เช‚ เชตเซเชฏเช•เซเชคเชฟเช—เชค เช‰เชชเชฏเซ‹เช—เซ€ เช˜เชŸเช•เซ‹เชจเชพ เชธเชชเซเชฒเชพเชฏเชฐ เชคเชฐเซ€เช•เซ‡ เชธเชฟเชฎเซเชซเซ‹เชจเซ€ เชตเชฟเชถเซ‡ เช˜เชฃเซเช‚ เชธเชพเช‚เชญเชณเซเชฏเซเช‚ เช›เซ‡, เช…เชจเซ‡ เชนเซเช‚ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เช•เซ‡เชŸเชฒเชพเช•เชจเซ‹ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเช‚ เช›เซเช‚. เช…เชจเซ‡ เชฒเชพเชฐเชพเชตเซ‡เชฒเชฎเชพเช‚เชฅเซ€ เช•เซ‡เชŸเชฒเซ€เช• เชตเชธเซเชคเซเช“เชจเซ‹ เชชเชฃ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡ เชคเซ‡เชฎเชจเชพ ORM, เชซเซเชฐเซ‡เชฎเชตเชฐเซเช•เชจเซ€ เชนเชพเชœเชฐเซ€ เชตเชฟเชจเชพ.

เชธเชฟเชฎเซเชซเซ‹เชจเซ€/เชฎเซ‡เชธเซ‡เชจเซเชœเชฐ

เชชเซเชฐเชฅเชฎ เช‰เชฎเซ‡เชฆเชตเชพเชฐ เชคเชฐเชค เชœ เช†เชฆเชฐเซเชถ เชฒเชพเช—เซเชฏเซ‹ เช…เชจเซ‡ เช•เซ‹เชˆ เชถเช‚เช•เชพ เชตเชฟเชจเชพ เชฎเซ‡เช‚ เชคเซ‡เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซเชฏเซเช‚. เชชเชฐเช‚เชคเซ เชธเชฟเชฎเซเชซเซ‹เชจเซ€เชจเซ€ เชฌเชนเชพเชฐเชจเชพ เช‰เชชเชฏเซ‹เช—เชจเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹ เช—เซ‚เช—เชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเซ‡ เชตเชงเซ เชฎเซเชถเซเช•เซ‡เชฒ เชฌเชจเซเชฏเซเช‚. เชธเชพเชฐเซเชตเชคเซเชฐเชฟเช•, เช…เชฐเซเชฅเชนเซ€เชจ เชจเชพเชฎเซ‹, เชธเช‚เชฆเซ‡เชถเชพเช“ เชชเชธเชพเชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชฌเชธ เช…เชจเซ‡ เชฐเซ‡เชกเชฟเชธ เชชเชฐ เชชเชฃ เชตเชฐเซเช—เซ‹เชจเชพ เชธเชฎเซ‚เชนเชฎเชพเช‚เชฅเซ€ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเชตเซเช‚?

PHP เชฌเซ‡เช•เชเชจเซเชกเชจเซ‡ Redis เชธเซเชŸเซเชฐเซ€เชฎ เชฌเชธเชฎเชพเช‚ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเชตเซเช‚ เช…เชจเซ‡ เชซเซเชฐเซ‡เชฎเชตเชฐเซเช•-เชธเซเชตเชคเช‚เชคเซเชฐ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชชเชธเช‚เชฆ เช•เชฐเชตเซ€

เช…เชงเชฟเช•เซƒเชค เชธเชพเช‡เชŸ เชชเชฐเชจเชพ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ‹ เช–เซ‚เชฌ เชตเชฟเช—เชคเชตเชพเชฐ เชนเชคเชพ, เชชเชฐเช‚เชคเซ เช†เชฐเช‚เชญเชจเซเช‚ เชตเชฐเซเชฃเชจ เชซเช•เซเชค เชธเชฟเชฎเซเชซเซ‹เชจเซ€ เชฎเชพเชŸเซ‡ เชคเซ‡เชฎเชจเชพ เชฎเชจเชชเชธเช‚เชฆ YML เช…เชจเซ‡ เชฌเชฟเชจ-เชธเชฟเชฎเซเชซเซ‹เชจเชฟเชธเซเชŸ เชฎเชพเชŸเซ‡ เช…เชจเซเชฏ เชœเชพเชฆเซ เชชเชฆเซเชงเชคเชฟเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚. เชฎเชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชฎเชพเช‚ เชœ เช•เซ‹เชˆ เชฐเชธ เชจเชนเซ‹เชคเซ‹, เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เชจเชตเชพ เชตเชฐเซเชทเชจเซ€ เชฐเชœเชพเช“ เชฆเชฐเชฎเชฟเชฏเชพเชจ. เชชเชฐเช‚เชคเซ เชฎเชพเชฐเซ‡ เช† เช…เชจเชชเซ‡เช•เซเชทเชฟเชค เชฐเซ€เชคเซ‡ เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏ เชธเซเชงเซ€ เช•เชฐเชตเซเช‚ เชชเชกเซเชฏเซเช‚.

เชธเชฟเชฎเซเชซเซ‹เชจเซ€ เชธเซเชคเซเชฐเซ‹เชคเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชธเชฟเชธเซเชŸเชฎเชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช‡เชจเซเชธเซเชŸเชจเซเชŸเซ‡เชŸ เช•เชฐเชตเซ€ เชคเซ‡ เชถเซ‹เชงเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชตเซ‹ เช เชชเชฃ เชšเซเชธเซเชค เชธเชฎเชฏเชฎเชฐเซเชฏเชพเชฆเชพ เชฎเชพเชŸเซ‡ เชธเซŒเชฅเซ€ เชคเซเชšเซเช› เช•เชพเชฐเซเชฏ เชจเชฅเซ€:

PHP เชฌเซ‡เช•เชเชจเซเชกเชจเซ‡ Redis เชธเซเชŸเซเชฐเซ€เชฎ เชฌเชธเชฎเชพเช‚ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเชตเซเช‚ เช…เชจเซ‡ เชซเซเชฐเซ‡เชฎเชตเชฐเซเช•-เชธเซเชตเชคเช‚เชคเซเชฐ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชชเชธเช‚เชฆ เช•เชฐเชตเซ€

เช† เชฌเชงเชพเชจเซ€ เชคเชชเชพเชธ เช•เชฐเซเชฏเชพ เชชเช›เซ€ เช…เชจเซ‡ เชฎเชพเชฐเชพ เชนเชพเชฅเชฅเซ€ เช•เช‚เชˆเช• เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชนเซเช‚ เชเชตเชพ เชจเชฟเชทเซเช•เชฐเซเชท เชชเชฐ เช†เชตเซเชฏเซ‹ เช•เซ‡ เชนเซเช‚ เช•เซ‹เชˆ เชชเซเชฐเช•เชพเชฐเชจเซ€ เช•เซเชฐเซ‰เชš เช•เชฐเซ€ เชฐเชนเซเชฏเซ‹ เช›เซเช‚ เช…เชจเซ‡ เช•เช‚เชˆเช• เชฌเซ€เชœเซเช‚ เช…เชœเชฎเชพเชตเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚.

เชชเซเชฐเช•เชพเชถเชฟเชค/เช•เชคเชพเชฐ

เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡ เช•เซ‡ เช† เชชเซเชธเซเชคเช•เชพเชฒเชฏ เชฒเชพเชฐเชพเชตเซ‡เชฒ เช‡เชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐ เช…เชจเซ‡ เช…เชจเซเชฏ เชจเชฟเชฐเซเชญเชฐเชคเชพเชจเชพ เชธเชฎเซ‚เชน เชธเชพเชฅเซ‡ เชšเซเชธเซเชคเชชเชฃเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒเซเช‚ เช›เซ‡, เชคเซ‡เชฅเซ€ เชฎเซ‡เช‚ เชคเซ‡เชจเชพ เชชเชฐ เชตเชงเซ เชธเชฎเชฏ เชชเชธเชพเชฐ เช•เชฐเซเชฏเซ‹ เชจเชฅเซ€: เชฎเซ‡เช‚ เชคเซ‡เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซเชฏเซเช‚, เชคเซ‡เชจเซ‡ เชœเซ‹เชฏเซเช‚, เช…เชตเชฒเช‚เชฌเชจ เชœเซ‹เชฏเซเช‚ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เช•เชพเชขเซ€ เชจเชพเช–เซเชฏเซเช‚.

yiisoft/yii2-เช•เชคเชพเชฐ

เช เซ€เช• เช›เซ‡, เช…เชนเซ€เช‚ เชคเซ‡ เชคเชฐเชค เชœ เชจเชพเชฎ เชชเชฐเชฅเซ€ เชงเชพเชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚, เชซเชฐเซ€เชฅเซ€, Yii2 เชธเชพเชฅเซ‡ เช•เชกเช• เชœเซ‹เชกเชพเชฃ. เชฎเชพเชฐเซ‡ เช† เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ เชชเชกเซเชฏเซ‹ เชนเชคเซ‹ เช…เชจเซ‡ เชคเซ‡ เช–เชฐเชพเชฌ เชจเชนเซ‹เชคเซเช‚, เชชเชฐเช‚เชคเซ เชฎเซ‡เช‚ เช เชนเช•เซ€เช•เชค เชตเชฟเชถเซ‡ เชตเชฟเชšเชพเชฐเซเชฏเซเช‚ เชจ เชนเชคเซเช‚ เช•เซ‡ เชคเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ Yii2 เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช›เซ‡.

เชฌเชพเช•เซ€เชจเชพ

GitHub เชชเชฐ เชฎเชจเซ‡ เชœเซ‡ เชฌเซ€เชœเซเช‚ เชฌเชงเซเช‚ เชฎเชณเซเชฏเซเช‚ เชคเซ‡ เช…เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ, เชœเซ‚เชจเชพ เช…เชจเซ‡ เชคเซเชฏเชœเซ€ เชฆเซ‡เชตเชพเชฏเซ‡เชฒเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเซเชธ เชนเชคเชพ เชœเซ‡เชฎเชพเช‚ เชคเชพเชฐเชพเช“, เชซเซ‹เชฐเซเช• เช…เชจเซ‡ เชฎเซ‹เชŸเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เช•เชฎเชฟเชŸ เชจเชฅเซ€.

เชธเชฟเชฎเซเชซเซ‹เชจเซ€/เชฎเซ‡เชธเซ‡เชจเซเชœเชฐ, เชคเช•เชจเซ€เช•เซ€ เชตเชฟเช—เชคเซ‹ เชชเชฐ เชชเชพเช›เชพ เชซเชฐเซ‹

เชฎเชพเชฐเซ‡ เช† เชชเซเชธเซเชคเช•เชพเชฒเชฏเชจเซ€ เชถเซ‹เชง เช•เชฐเชตเซ€ เชนเชคเซ€ เช…เชจเซ‡ เชฅเซ‹เชกเซ‹ เชตเชงเซ เชธเชฎเชฏ เชตเชฟเชคเชพเชตเซเชฏเชพ เชชเช›เซ€, เชนเซเช‚ เชธเช•เซเชทเชฎ เชฌเชจเซเชฏเซ‹. เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡ เช•เซ‡ เชฌเชงเซเช‚ เชเช•เชฆเชฎ เชธเช‚เช•เซเชทเชฟเชชเซเชค เช…เชจเซ‡ เชธเชฐเชณ เชนเชคเซเช‚. เชฌเชธ เชšเชพเชฒเซ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชฎเซ‡เช‚ เชเช• เชจเชพเชจเซเช‚ เช•เชพเชฐเช–เชพเชจเซเช‚ เชฌเชจเชพเชตเซเชฏเซเช‚, เช•เชพเชฐเชฃ เช•เซ‡... เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช˜เชฃเชพ เชŸเชพเชฏเชฐ เช…เชจเซ‡ เชœเซเชฆเชพ เชœเซเชฆเชพ เชนเซ‡เชจเซเชกเชฒเชฐเซเชธ เชนเซ‹เชตเชพเชจเชพ เชนเชคเชพ.

PHP เชฌเซ‡เช•เชเชจเซเชกเชจเซ‡ Redis เชธเซเชŸเซเชฐเซ€เชฎ เชฌเชธเชฎเชพเช‚ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเชตเซเช‚ เช…เชจเซ‡ เชซเซเชฐเซ‡เชฎเชตเชฐเซเช•-เชธเซเชตเชคเช‚เชคเซเชฐ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชชเชธเช‚เชฆ เช•เชฐเชตเซ€

เชฎเชพเชคเซเชฐ เชฅเซ‹เชกเชพ เชชเช—เชฒเชพเช‚:

  • เช…เชฎเซ‡ เชฎเซ‡เชธเซ‡เชœ เชนเซ‡เชจเซเชกเชฒเชฐเซเชธ เชฌเชจเชพเชตเซ€เช เช›เซ€เช เชœเซ‡ เชซเช•เซเชค เช•เซ‰เชฒ เช•เชฐเชตเชพ เชฏเซ‹เช—เซเชฏ เชนเซ‹เชตเชพ เชœเซ‹เชˆเช
  • เช…เชฎเซ‡ เชคเซ‡เชฎเชจเซ‡ เชนเซ‡เชจเซเชกเชฒเชฐเชกเซ‡เชธเซเช•เซเชฐเซ€เชชเซเชŸเชฐเชฎเชพเช‚ เชฒเชชเซ‡เชŸเซ€เช เช›เซ€เช (เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชฎเชพเช‚เชฅเซ€ เชตเชฐเซเช—)
  • เช…เชฎเซ‡ เช† "เชตเชฐเซเชฃเชจเช•เชฐเซเชคเชพเช“" เชจเซ‡ เชนเซ‡เชจเซเชกเชฒเชฐเซเชธเชฒเซ‹เช•เซ‡เชŸเชฐ เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚ เชฒเชชเซ‡เชŸเซ€เช เช›เซ€เช
  • เชนเซ‡เชจเซเชกเชฒเชฐเซเชธเชฒเซ‹เช•เซ‡เชŸเชฐเชจเซ‡ เชฎเซ‡เชธเซ‡เชœเชฌเชธ เชฆเชพเช–เชฒเชพเชฎเชพเช‚ เช‰เชฎเซ‡เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ‡
  • เช…เชฎเซ‡ เชธเซ‡เชจเซเชกเชฐเชฒเซ‹เช•เซ‡เชŸเชฐเชจเซ‡ `เชธเซ‡เชจเซเชกเชฐเช‡เช‚เชŸเชฐเชซเซ‡เชธ`เชจเซ‹ เชธเชฎเซ‚เชน เชชเชธเชพเชฐ เช•เชฐเซ€เช เช›เซ€เช, เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ `เชฐเซ‡เชกเชฟเชธเชŸเซเชฐเชพเชจเซเชธเชชเซ‹เชฐเซเชŸ` เชตเชฐเซเช—เซ‹เชจเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹, เชœเซ‡ เชธเซเชชเชทเซเชŸ เชฐเซ€เชคเซ‡ เช—เซ‹เช เชตเซ‡เชฒ เช›เซ‡.
  • MessageBus เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚ SendersLocator เช‰เชฎเซ‡เชฐเชตเชพเชจเซเช‚

เชฎเซ‡เชธเซ‡เชœเชฌเชธ เชชเชพเชธเซ‡ `->เชกเชฟเชธเซเชชเซ‡เชš()` เชชเชฆเซเชงเชคเชฟ เช›เซ‡ เชœเซ‡ เชนเซ‡เชจเซเชกเชฒเชฐเซเชธเชฒเซ‹เช•เซ‡เชŸเชฐเชฎเชพเช‚ เชฏเซ‹เช—เซเชฏ เชนเซ‡เชจเซเชกเชฒเชฐเซเชธเชจเซ‡ เชœเซเช เช›เซ‡ เช…เชจเซ‡ เชฌเชธ (เชฐเซ‡เชกเซ€เชธ เชธเซเชŸเซเชฐเซ€เชฎเซเชธ) เชฆเซเชตเชพเชฐเชพ เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡ เช…เชจเซเชฐเซ‚เชช `เชธเซ‡เชจเซเชกเชฐ เชˆเชจเซเชŸเชฐเชซเซ‡เชธ` เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเซ‡เชฎเชจเซ‡ เชธเช‚เชฆเซ‡เชถ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡.

เช•เชจเซเชŸเซ‡เชจเชฐ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชฎเชพเช‚ (เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ 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);
        },

เช…เชนเซ€เช‚ เชคเชฎเซ‡ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹ เช•เซ‡ SendersLocator เชฎเชพเช‚ เช…เชฎเซ‡ เชฌเซ‡ เช…เชฒเช—-เช…เชฒเช— เชธเช‚เชฆเซ‡เชถเชพเช“ เชฎเชพเชŸเซ‡ เช…เชฒเช—-เช…เชฒเช— "เชชเชฐเชฟเชตเชนเชจ" เช…เชธเชพเช‡เชจ เช•เชฐเซเชฏเชพ เช›เซ‡, เชœเซ‡เชฎเชพเช‚เชจเชพ เชฆเชฐเซ‡เช•เชจเซเช‚ เช…เชจเซเชฐเซ‚เชช เชธเซเชŸเซเชฐเซ€เชฎเซเชธ เชธเชพเชฅเซ‡เชจเซเช‚ เชชเซ‹เชคเชพเชจเซเช‚ เชœเซ‹เชกเชพเชฃ เช›เซ‡.

เชฎเซ‡เช‚ เชจเซ€เชšเซ‡เชจเซ€ เชฌเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชเช•เชฌเซ€เชœเชพ เชธเชพเชฅเซ‡ เชตเชพเชคเชšเซ€เชค เช•เชฐเชคเชพ เชคเซเชฐเชฃ เชกเชฟเชฎเชจเชจเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฆเชฐเซเชถเชพเชตเชคเซ‹ เชเช• เช…เชฒเช— เชกเซ‡เชฎเซ‹ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชฌเชจเชพเชตเซเชฏเซ‹: https://github.com/backend-university/products/tree/master/products/02-redis-streams-bus.

เชชเชฐเช‚เชคเซ เชนเซเช‚ เชคเชฎเชจเซ‡ เชฌเชคเชพเชตเซ€เชถ เช•เซ‡ เช‰เชชเชญเซ‹เช•เซเชคเชพเชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเช‚เชฐเชšเชฟเชค เช•เชฐเซ€ เชถเช•เชพเชฏ:

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();

เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชฎเชพเช‚ เช† เชˆเชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹

เชฌเชธเชจเซ‡ เชฎเชพเชฐเชพ เชฌเซ‡เช•เชเชจเซเชกเชฎเชพเช‚ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เซเชฏเชพ เชชเช›เซ€, เชฎเซ‡เช‚ เชœเซ‚เชจเชพ เชธเชฟเช‚เช•เซเชฐเชจเชธ เช•เชฎเชพเชจเซเชกเชฎเชพเช‚เชฅเซ€ เชตเซเชฏเช•เซเชคเชฟเช—เชค เชคเชฌเช•เซเช•เชพเช“เชจเซ‡ เช…เชฒเช— เช•เชฐเซเชฏเชพ เช…เชจเซ‡ เช…เชฒเช— เชนเซ‡เชจเซเชกเชฒเชฐเซเชธ เชฌเชจเชพเชตเซเชฏเชพ, เชœเซ‡เชฎเชพเช‚เชฅเซ€ เชฆเชฐเซ‡เช• เชชเซ‹เชคเชชเซ‹เชคเชพเชจเซเช‚ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡.

เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚ เชจเชตเซ€ เชธเชพเช‡เชŸ เช‰เชฎเซ‡เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชชเชพเช‡เชชเชฒเชพเช‡เชจ เช†เชจเชพ เชœเซ‡เชตเซ€ เชฆเซ‡เช–เชพเชคเซ€ เชนเชคเซ€:

PHP เชฌเซ‡เช•เชเชจเซเชกเชจเซ‡ Redis เชธเซเชŸเซเชฐเซ€เชฎ เชฌเชธเชฎเชพเช‚ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเชตเซเช‚ เช…เชจเซ‡ เชซเซเชฐเซ‡เชฎเชตเชฐเซเช•-เชธเซเชตเชคเช‚เชคเซเชฐ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชชเชธเช‚เชฆ เช•เชฐเชตเซ€

เช…เชจเซ‡ เชคเซ‡ เชชเช›เซ€ เชคเชฐเชค เชœ, เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชจเชตเซ€ เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพ เช‰เชฎเซ‡เชฐเชตเชพเชจเซเช‚ เช–เซ‚เชฌ เชธเชฐเชณ เชฌเชจเซเชฏเซเช‚, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, Rss เชจเซ‡ เชเช•เซเชธเชŸเซเชฐเซ‡เช•เซเชŸ เช…เชจเซ‡ เชชเชพเชฐเซเชธเชฟเช‚เช—. เช•เชพเชฐเชฃ เช•เซ‡ เช† เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชฎเชพเชŸเซ‡ เชฎเซ‚เชณ เชธเชพเชฎเช—เซเชฐเซ€เชจเซ€ เชชเชฃ เชœเชฐเซ‚เชฐ เชชเชกเซ‡ เช›เซ‡, เชชเช›เซ€ RSS เชฒเชฟเช‚เช• เชเช•เซเชธเชŸเซเชฐเซ‡เช•เซเชŸเชฐ เชนเซ‡เชจเซเชกเชฒเชฐ, เชœเซ‡เชฎ เช•เซ‡ WebsiteIndexHistoryPersistor, "เชธเชพเชฎเช—เซเชฐเซ€/HtmlContent" เชธเช‚เชฆเซ‡เชถเชจเซ‡ เชธเชฌเซเชธเซเช•เซเชฐเชพเช‡เชฌ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‡เชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เช‡เชšเซเช›เชฟเชค เชธเช‚เชฆเซ‡เชถเชจเซ‡ เชคเซ‡เชจเซ€ เชชเชพเช‡เชชเชฒเชพเช‡เชจ เชธเชพเชฅเซ‡ เช†เช—เชณ เชชเชธเชพเชฐ เช•เชฐเซ‡ เช›เซ‡.

PHP เชฌเซ‡เช•เชเชจเซเชกเชจเซ‡ Redis เชธเซเชŸเซเชฐเซ€เชฎ เชฌเชธเชฎเชพเช‚ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเชตเซเช‚ เช…เชจเซ‡ เชซเซเชฐเซ‡เชฎเชตเชฐเซเช•-เชธเซเชตเชคเช‚เชคเซเชฐ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชชเชธเช‚เชฆ เช•เชฐเชตเซ€

เช…เช‚เชคเซ‡, เช…เชฎเซ‡ เช˜เชฃเชพ เชกเชฟเชฎเชจ เชธเชพเชฅเซ‡ เชธเชฎเชพเชชเซเชค เชฅเชฏเชพ, เชœเซ‡เชฎเชพเช‚เชฅเซ€ เชฆเชฐเซ‡เช• เชซเช•เซเชค เชœเชฐเซ‚เชฐเซ€ เชธเช‚เชธเชพเชงเชจเซ‹ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฃ เชœเชพเชณเชตเซ‡ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชเช• เชฐเชพเช•เซเชทเชธ เช•เซเชฐเซ‹เชฒเชฐเซเชธ เชธเชพเชฎเช—เซเชฐเซ€ เชฎเชพเชŸเซ‡ เชˆเชจเซเชŸเชฐเชจเซ‡เชŸ เชชเชฐ เชœเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ เชคเซ‡เชตเชพ เชคเชฎเชพเชฎ เชนเซ‡เชจเซเชกเชฒเชฐเซเชธ เช…เชจเซ‡ เชกเชฟเชฎเชจ เชธเชฎเชพเชตเซ‡ เช›เซ‡ เชŸเช•เซ€ เชฐเชนเซ‡เชตเซเช‚ เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฃ เชงเชฐเชพเชตเซ‡ เช›เซ‡.

เชนเชตเซ‡, เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚เชฅเซ€ เชชเชธเช‚เชฆ เช•เชฐเชตเชพเชจเซ‡ เชฌเชฆเชฒเซ‡, เชชเชฐเซเชธเชฟเชธเซเชŸเชฐ เชฆเซเชตเชพเชฐเชพ เชฆเชพเช–เชฒ เช•เชฐเซเชฏเชพ เชชเช›เซ€ เชœเชฐเซ‚เชฐเซ€ เช†เชˆเชกเซ€ เชฌเชธ เชฆเซเชตเชพเชฐเชพ เชฌเชงเชพ เชฐเชธ เชงเชฐเชพเชตเชคเชพ เชนเซ‡เชจเซเชกเชฒเชฐเซเชธเชจเซ‡ เชŸเซเชฐเชพเชจเซเชธเชฎเชฟเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เชธเซ‹เชฐเซเชธ: www.habr.com

DDoS เชธเซเชฐเช•เซเชทเชพ, VPS VDS เชธเชฐเซเชตเชฐ เชงเชฐเชพเชตเชคเซ€ เชธเชพเช‡เชŸเซเชธ เชฎเชพเชŸเซ‡ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชนเซ‹เชธเซเชŸเชฟเช‚เช— เช–เชฐเซ€เชฆเซ‹ ๐Ÿ”ฅ DDoS เชธเซเชฐเช•เซเชทเชพ, VPS VDS เชธเชฐเซเชตเชฐเซเชธ เชธเชพเชฅเซ‡ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชตเซ‡เชฌเชธเชพเช‡เชŸ เชนเซ‹เชธเซเชŸเชฟเช‚เช— เช–เชฐเซ€เชฆเซ‹ | ProHoster