āĻā§āĻŽāĻŋāĻāĻž
āĻāĻŽāĻžāĻ° āĻāĻ¯āĻŧā§āĻŦāĻ¸āĻžāĻāĻ, āĻ¯āĻž āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻļāĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻžāĻ˛āĻžāĻ, āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧ āĻšā§āĻŽ āĻĒā§āĻ āĻāĻŦāĻ āĻŦā§āĻ¯āĻā§āĻ¤āĻŋāĻāĻ¤ āĻ¸āĻžāĻāĻāĻā§āĻ˛āĻŋ āĻšā§āĻ¸ā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĄāĻŋāĻāĻžāĻāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ā§ˇ āĻāĻ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻāĻŋ āĻāĻŽāĻžāĻ° āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻŋāĻ āĻ¯āĻžāĻ¤ā§āĻ°āĻžāĻ° āĻāĻā§āĻŦāĻžāĻ°ā§ āĻļā§āĻ°ā§āĻ¤ā§ āĻāĻŽāĻžāĻā§ āĻāĻā§āĻ°āĻšā§ āĻāĻ°āĻ¤ā§ āĻļā§āĻ°ā§ āĻāĻ°ā§āĻāĻŋāĻ˛; āĻ¸ā§āĻ āĻŽā§āĻšā§āĻ°ā§āĻ¤ā§ āĻāĻŽāĻŋ āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤ āĻĒā§āĻļāĻžāĻĻāĻžāĻ°āĻĻā§āĻ° āĻā§āĻāĻā§ āĻĒā§āĻ¯āĻŧā§ āĻŽā§āĻā§āĻ§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĻžāĻŽ āĻ¯āĻžāĻ°āĻž āĻ¨āĻŋāĻā§āĻ° āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§, āĻ¤āĻžāĻĻā§āĻ° āĻļāĻ āĻāĻŦāĻ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻā§āĻ˛āĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ˛ā§āĻā§āĻ¨āĨ¤ āĻāĻŽāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻā§āĻ˛āĻŋ āĻāĻŦāĻŋāĻˇā§āĻāĻžāĻ° āĻāĻ°āĻžāĻ° āĻ
āĻā§āĻ¯āĻžāĻ¸āĻāĻŋ āĻāĻ āĻ
āĻŦāĻ§āĻŋ āĻ°āĻ¯āĻŧā§ āĻā§āĻā§: āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻŦāĻžāĻŖāĻŋāĻā§āĻ¯āĻŋāĻ āĻāĻŦāĻ āĻā§āĻŦ āĻŦāĻžāĻŖāĻŋāĻā§āĻ¯āĻŋāĻ āĻ¸āĻžāĻāĻā§ āĻ¨āĻ¯āĻŧ, āĻāĻŽāĻŋ āĻ˛ā§āĻāĻāĻĻā§āĻ° āĻ˛āĻŋāĻā§āĻāĻā§āĻ˛āĻŋāĻ° āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ā§ āĻĢā§āĻāĻžāĻ°āĻāĻŋ āĻĻā§āĻāĻ¤ā§ āĻĨāĻžāĻāĻŋāĨ¤
āĻ§āĻžāĻ°āĻŖāĻžāĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨
āĻĒā§āĻ°āĻĨāĻŽ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻāĻŋ āĻāĻŽāĻžāĻ° āĻŦā§āĻ¯āĻā§āĻ¤āĻŋāĻāĻ¤ āĻāĻ¯āĻŧā§āĻŦāĻ¸āĻžāĻāĻā§ āĻāĻāĻāĻŋ āĻāĻāĻāĻāĻŋāĻāĻŽāĻāĻ˛ āĻĒā§āĻˇā§āĻ āĻž āĻāĻŋāĻ˛, āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻāĻ˛ āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻ¯āĻŧ āĻ¸ā§āĻŦāĻžāĻā§āĻˇāĻ° āĻ¸āĻš āĻ˛āĻŋāĻā§āĻāĻā§āĻ˛āĻŋ āĻ°ā§āĻā§āĻāĻŋāĻ˛āĻžāĻŽāĨ¤ āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻĨā§ 20 āĻĒā§āĻˇā§āĻ āĻž āĻāĻžāĻāĻĒ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻāĻŽāĻŋ āĻāĻžāĻŦāĻ¤ā§ āĻļā§āĻ°ā§ āĻāĻ°āĻŋ āĻ¯ā§ āĻāĻāĻŋ āĻā§āĻŦ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻ¨āĻ¯āĻŧ āĻāĻŦāĻ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻā§āĨ¤ āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻāĻāĻžāĻ°āĻĢā§āĻ˛ā§āĻ¤ā§, āĻāĻŽāĻŋ āĻ˛āĻā§āĻˇā§āĻ¯ āĻāĻ°ā§āĻāĻŋ āĻ¯ā§ āĻ āĻ¨ā§āĻ āĻ˛ā§āĻ āĻ¤āĻžāĻĻā§āĻ° āĻĒā§āĻ°ā§āĻĢāĻžāĻāĻ˛ā§ āĻ¸āĻžāĻāĻāĻā§āĻ˛āĻŋ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°ā§, āĻ¤āĻžāĻ āĻāĻŽāĻŋ php-āĻ āĻāĻāĻāĻŋ āĻĒāĻžāĻ°ā§āĻ¸āĻžāĻ° āĻ˛āĻŋāĻā§āĻāĻŋāĻ˛āĻžāĻŽ, āĻ¯āĻž āĻā§āĻŦāĻ˛ āĻĒā§āĻ°āĻĨāĻŽāĻāĻŋ āĻĻāĻŋāĻ¯āĻŧā§ āĻļā§āĻ°ā§ āĻāĻ°ā§ āĻĒā§āĻ°ā§āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ āĻĻāĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻ¯āĻŧ (SO āĻ¤ā§ āĻāĻāĻā§āĻ° āĻ āĻŋāĻāĻžāĻ¨āĻžāĻā§āĻ˛āĻŋ āĻāĻ āĻ°āĻāĻŽ: `/users/1` ), āĻĒāĻāĻ¨ā§āĻĻāĻ¸āĻ āĻā§āĻ¯āĻžāĻ āĻĨā§āĻā§ āĻ˛āĻŋāĻā§āĻāĻā§āĻ˛āĻŋ āĻŦā§āĻ° āĻāĻ°ā§ SQLite āĻ āĻ¯ā§āĻ āĻāĻ°ā§āĨ¤
āĻāĻāĻŋāĻā§ āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻŦāĻ˛āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§: āĻāĻāĻāĻŋ SQLite āĻā§āĻŦāĻŋāĻ˛ā§ āĻšāĻžāĻāĻžāĻ° āĻšāĻžāĻāĻžāĻ° URL-āĻāĻ° āĻāĻāĻāĻŋ āĻ¸āĻāĻā§āĻ°āĻš, āĻ¯āĻž HTML-āĻ āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻŋāĻ āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻā§ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°ā§āĻā§āĨ¤ āĻāĻŽāĻŋ āĻāĻ āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻ¯āĻŧ āĻāĻāĻāĻŋ āĻ¸āĻšāĻ āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°ā§āĻāĻŋ. āĻāĻžāĻ°āĻŖ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° URL āĻāĻŋāĻ˛, āĻ¤āĻžāĻ°āĻĒāĻ° āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨āĻāĻŋ āĻā§āĻŦāĻ˛ āĻ¤āĻžāĻĻā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻāĻŋāĻ˛āĨ¤
āĻāĻ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻāĻŽāĻŋ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻāĻŋ āĻĒāĻ°āĻŋāĻ¤ā§āĻ¯āĻžāĻ āĻāĻ°ā§āĻāĻŋ āĻāĻŦāĻ āĻĻā§āĻ°ā§āĻ āĻ¸āĻŽāĻ¯āĻŧ āĻĒāĻ°ā§ āĻāĻāĻŋāĻ¤ā§ āĻĢāĻŋāĻ°ā§ āĻāĻ¸ā§āĻāĻŋāĨ¤ āĻāĻ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§, āĻāĻŽāĻžāĻ° āĻāĻžāĻā§āĻ° āĻ āĻāĻŋāĻā§āĻāĻ¤āĻž āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻ¤āĻŋāĻ¨ āĻŦāĻāĻ°ā§āĻ°āĻ āĻŦā§āĻļāĻŋ āĻāĻŋāĻ˛ āĻāĻŦāĻ āĻāĻŽāĻŋ āĻ āĻ¨ā§āĻāĻŦ āĻāĻ°ā§āĻāĻŋ āĻ¯ā§ āĻāĻŽāĻŋ āĻāĻ°āĻ āĻā§āĻ°ā§āĻ¤āĻ° āĻāĻŋāĻā§ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻāĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻ¤ā§āĻ˛āĻ¨āĻžāĻŽā§āĻ˛āĻāĻāĻžāĻŦā§ āĻ¨āĻ¤ā§āĻ¨ āĻĒā§āĻ°āĻ¯ā§āĻā§āĻ¤āĻŋ āĻāĻ¯āĻŧāĻ¤ā§āĻ¤ āĻāĻ°āĻžāĻ° āĻāĻāĻāĻŋ āĻŽāĻšāĻžāĻ¨ āĻāĻā§āĻāĻž āĻāĻŋāĻ˛.
āĻāĻ§ā§āĻ¨āĻŋāĻ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ
āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž
āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻžāĻāĻāĻā§āĻ˛āĻŋ āĻāĻāĻāĻŋ āĻāĻ¨āĻ¸ā§āĻ˛ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¯āĻž āĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻ¸āĻāĻžāĻŦā§ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤āĻā§āĻ˛āĻŋ āĻāĻ°ā§:
- URL āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻžāĻŽāĻā§āĻ°ā§ āĻĄāĻžāĻāĻ¨āĻ˛ā§āĻĄ āĻāĻ°ā§
- HTTPS āĻāĻĒāĻ˛āĻŦā§āĻ§ āĻāĻŋāĻ˛ āĻāĻŋāĻ¨āĻž āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻāĻ°ā§ āĻāĻāĻāĻŋ āĻĒāĻ¤āĻžāĻāĻž āĻ¸ā§āĻ āĻāĻ°ā§
- āĻāĻ¯āĻŧā§āĻŦāĻ¸āĻžāĻāĻā§āĻ° āĻ¸āĻžāĻ°āĻžāĻāĻļ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§
- āĻā§āĻ¸ HTML āĻāĻŦāĻ āĻļāĻŋāĻ°ā§āĻ¨āĻžāĻŽāĻā§āĻ˛āĻŋ "āĻ¸ā§āĻā§āĻāĻ°āĻŖ" āĻāĻ¤āĻŋāĻšāĻžāĻ¸ā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŋāĻ¤ āĻšāĻ¯āĻŧ
- āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¸ āĻāĻ°ā§, āĻļāĻŋāĻ°ā§āĻ¨āĻžāĻŽ āĻāĻŦāĻ āĻŦāĻŋāĻŦāĻ°āĻŖ āĻŦā§āĻ° āĻāĻ°ā§
- āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻ¸āĻāĻā§āĻ°āĻšā§ āĻĄā§āĻāĻž āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§
āĻāĻāĻŋ āĻā§āĻŦāĻ˛ āĻ¸āĻžāĻāĻāĻā§āĻ˛āĻŋ āĻ¸āĻā§āĻāĻ¯āĻŧ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¯āĻĨā§āĻˇā§āĻ āĻāĻŋāĻ˛:
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻ¸ā§āĻā§āĻāĻ°āĻŖ, āĻļā§āĻ°ā§āĻŖā§āĻāĻ°āĻŖ āĻāĻŦāĻ āĻ°âā§āĻ¯āĻžāĻā§āĻāĻŋāĻ, āĻ¸āĻŦāĻāĻŋāĻā§ āĻāĻĒ āĻā§ āĻĄā§āĻ āĻ°āĻžāĻāĻžāĻ° āĻ§āĻžāĻ°āĻŖāĻžāĻāĻŋ āĻāĻ āĻĻā§āĻˇā§āĻāĻžāĻ¨ā§āĻ¤ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ˛āĻāĻžāĻŦā§ āĻŽāĻžāĻ¨āĻžāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻāĻŽāĻ¨āĻāĻŋ āĻ¸āĻŽā§āĻāĻžāĻŦā§āĻ¯ DDoS āĻāĻĄāĻŧāĻžāĻ¤ā§ āĻĒā§āĻˇā§āĻ āĻžāĻā§āĻ˛āĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻā§āĻĄ āĻĄā§āĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻāĻŦāĻ āĻŦā§āĻ˛āĻāĻŋāĻ āĻ¯ā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻŦāĻ˛ āĻāĻāĻāĻŋ āĻāĻ¯āĻŧā§āĻŦ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¯ā§āĻ āĻāĻ°āĻžāĨ¤
āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻāĻžāĻŦā§, āĻ āĻŦāĻļā§āĻ¯āĻ, āĻ¸āĻŦāĻāĻŋāĻā§ āĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻ¸āĻāĻžāĻŦā§ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻāĻŦāĻ āĻāĻ¯āĻŧā§āĻŦ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§ āĻāĻĒāĻ¨āĻŋ āĻā§āĻŦāĻ˛ URLāĻāĻŋ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻ¯āĻžāĻ¤ā§ āĻ°āĻžāĻā§āĻˇāĻ¸ āĻĄā§āĻŽāĻ¨ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻĨā§āĻā§ URLāĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻžāĻ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°ā§āĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻ¨āĻ, āĻāĻŽāĻ¨āĻāĻŋ āĻāĻāĻžāĻ¨ā§ "āĻ¸āĻžāĻ°āĻŋ" āĻļāĻŦā§āĻĻāĻāĻŋ āĻ¨āĻŋāĻā§āĻ āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦ āĻāĻ°ā§āĨ¤ āĻāĻŦāĻ āĻ¯āĻĻāĻŋ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ°āĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻžāĻ āĻŦāĻŋāĻāĻā§āĻ¤ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŦāĻ āĻ āĻ¨ā§āĻ¤āĻ¤ āĻ ā§āĻ¯āĻžāĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻ¸āĻāĻžāĻŦā§ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻ°āĻžāĻ¯āĻŧ
āĻ¸āĻžāĻ°āĻŋāĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻžāĻ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻā§āĻ¨ā§āĻ-āĻāĻžāĻ˛āĻŋāĻ¤ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨āĨ¤ āĻāĻŦāĻ āĻāĻŽāĻŋ āĻĻā§āĻ°ā§āĻāĻĻāĻŋāĻ¨ āĻ§āĻ°ā§ āĻ°ā§āĻĄāĻŋāĻ¸ āĻ¸ā§āĻā§āĻ°āĻŋāĻŽāĻā§āĻ˛āĻŋ āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻ¤ā§ āĻāĻžāĻāĨ¤
āĻĒāĻŋāĻāĻāĻāĻĒāĻŋāĻ¤ā§ āĻ°ā§āĻĄāĻŋāĻ¸ āĻ¸ā§āĻā§āĻ°āĻŋāĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž
āĻāĻžāĻ°āĻŖ āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻŽāĻžāĻ° āĻĢā§āĻ°ā§āĻŽāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻ¤āĻŋāĻ¨āĻāĻŋ āĻāĻžāĻ¯āĻŧāĻžāĻ¨ā§āĻ Symfony, Laravel, Yii āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻ¨āĻ¯āĻŧ, āĻ¤āĻžāĻ āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻ¸ā§āĻŦāĻžāĻ§ā§āĻ¨ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻā§āĻāĻāĻ¤ā§ āĻāĻžāĻāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§, āĻāĻāĻŋ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻšāĻ¯āĻŧā§āĻā§ (āĻĒā§āĻ°āĻĨāĻŽ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ¯āĻŧ), āĻĒā§āĻĨāĻ āĻā§āĻ°ā§āĻ¤āĻ° āĻā§āĻ°āĻ¨ā§āĻĨāĻžāĻāĻžāĻ°āĻā§āĻ˛āĻŋ āĻā§āĻāĻā§ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ āĻ¸āĻŽā§āĻāĻŦāĨ¤ āĻ¸āĻžāĻ°āĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤ āĻ¸āĻŦāĻāĻŋāĻā§āĻ āĻšāĻ¯āĻŧ āĻĒāĻžāĻāĻ āĻŦāĻāĻ° āĻāĻā§ 3 āĻāĻŽāĻŋāĻā§āĻ° āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ, āĻ āĻĨāĻŦāĻž āĻāĻžāĻ āĻžāĻŽā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻŦāĻĻā§āĻ§āĨ¤
āĻāĻŽāĻŋ āĻĒā§āĻĨāĻ āĻĻāĻ°āĻāĻžāĻ°ā§ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ¸āĻ°āĻŦāĻ°āĻžāĻšāĻāĻžāĻ°ā§ āĻšāĻŋāĻ¸āĻžāĻŦā§ Symfony āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ āĻ¨ā§āĻ āĻāĻŋāĻā§ āĻļā§āĻ¨ā§āĻāĻŋ āĻāĻŦāĻ āĻāĻŽāĻŋ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻ¸ā§āĻā§āĻ˛āĻŋāĻ° āĻāĻŋāĻā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋāĨ¤ āĻāĻŦāĻ āĻ˛āĻžāĻ°āĻžāĻā§āĻ˛ā§āĻ° āĻāĻŋāĻā§ āĻāĻŋāĻ¨āĻŋāĻ¸āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ āĻ¤āĻžāĻĻā§āĻ° ORM, āĻĢā§āĻ°ā§āĻŽāĻāĻ¯āĻŧāĻžāĻ°ā§āĻā§āĻ° āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻāĻžāĻĄāĻŧāĻžāĻāĨ¤
āĻ¸āĻŋāĻŽāĻĢāĻ¨āĻŋ/āĻŽā§āĻ¸ā§āĻā§āĻāĻžāĻ°
āĻĒā§āĻ°āĻĨāĻŽ āĻĒā§āĻ°āĻžāĻ°ā§āĻĨā§ āĻ āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻāĻĻāĻ°ā§āĻļ āĻŦāĻ˛ā§ āĻŽāĻ¨ā§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻāĻŦāĻ āĻā§āĻ¨ āĻ¸āĻ¨ā§āĻĻā§āĻš āĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻŽāĻŋ āĻāĻāĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°ā§āĻāĻŋāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¸āĻŋāĻŽāĻĢāĻ¨āĻŋāĻ° āĻŦāĻžāĻāĻ°ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖāĻā§āĻ˛āĻŋ āĻā§āĻāĻ˛ āĻāĻ°āĻž āĻāĻ°āĻ āĻāĻ āĻŋāĻ¨ āĻšāĻ¯āĻŧā§ āĻāĻ ā§āĻā§āĨ¤ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻāĻā§āĻā§āĻ āĻā§āĻ˛āĻžāĻ¸ āĻĨā§āĻā§ āĻ¸āĻžāĻ°ā§āĻŦāĻāĻ¨ā§āĻ¨, āĻ āĻ°ā§āĻĨāĻšā§āĻ¨ āĻ¨āĻžāĻŽ, āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒāĻžāĻ āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻŦāĻžāĻ¸ āĻāĻŦāĻ āĻāĻŽāĻ¨āĻāĻŋ āĻ°ā§āĻĄāĻŋāĻ¸ā§ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻšāĻŦā§āĻ¨?
āĻ
āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻ¸āĻžāĻāĻā§ āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ āĻŦā§āĻļ āĻŦāĻŋāĻļāĻĻ āĻāĻŋāĻ˛, āĻ¤āĻŦā§ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻāĻāĻ°āĻŖāĻāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸āĻŋāĻŽāĻĢāĻ¨āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻ¤āĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻŋāĻ¯āĻŧ YML āĻāĻŦāĻ āĻ
-āĻ¸āĻŋāĻŽā§āĻĢā§āĻ¨āĻŋāĻ¸ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻāĻžāĻĻā§ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤ āĻŦāĻŋāĻļā§āĻˇ āĻāĻ°ā§ āĻ¨āĻŦāĻŦāĻ°ā§āĻˇā§āĻ° āĻā§āĻāĻŋāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻ¨āĻ¸ā§āĻāĻ˛ā§āĻļāĻ¨ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ¯āĻŧ āĻāĻŽāĻžāĻ° āĻā§āĻ¨ā§ āĻāĻā§āĻ°āĻš āĻāĻŋāĻ˛ āĻ¨āĻžāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŽāĻžāĻā§ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ
āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻŋāĻ¤āĻāĻžāĻŦā§ āĻĻā§āĻ°ā§āĻ āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤
āĻ¸āĻŋāĻŽāĻĢāĻ¨āĻŋ āĻāĻ¤ā§āĻ¸āĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻā§āĻāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻā§ āĻāĻ¨āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻāĻŋāĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¤āĻž āĻŦā§āĻāĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻž āĻāĻāĻāĻŋ āĻļāĻā§āĻ¤ āĻ¸āĻŽāĻ¯āĻŧāĻ¸ā§āĻŽāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻ¤ā§āĻā§āĻ āĻāĻžāĻ āĻ¨āĻ¯āĻŧ:
āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻŋāĻā§āĻ° āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§ āĻāĻŦāĻ āĻāĻŽāĻžāĻ° āĻšāĻžāĻ¤ā§ āĻāĻŋāĻā§ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻāĻŽāĻŋ āĻāĻ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ā§ āĻĒā§āĻāĻā§āĻāĻŋāĻ˛āĻžāĻŽ āĻ¯ā§ āĻāĻŽāĻŋ āĻāĻ āĻ§āĻ°āĻŖā§āĻ° āĻā§āĻ°āĻžāĻ āĻāĻ°āĻāĻŋ āĻāĻŦāĻ āĻ
āĻ¨ā§āĻ¯ āĻāĻŋāĻā§ āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋāĨ¤
āĻāĻ˛ā§āĻāĻŋāĻ¤/āĻ¸āĻžāĻ°āĻŋ
āĻĻā§āĻāĻž āĻā§āĻ˛ āĻ¯ā§ āĻāĻ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻāĻŋ āĻ˛āĻžāĻ°āĻžāĻā§āĻ˛ āĻ āĻŦāĻāĻžāĻ āĻžāĻŽā§ āĻāĻŦāĻ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻļāĻā§āĻ¤āĻāĻžāĻŦā§ āĻāĻŦāĻĻā§āĻ§ āĻāĻŋāĻ˛, āĻ¤āĻžāĻ āĻāĻŽāĻŋ āĻāĻāĻŋāĻ¤ā§ āĻŦā§āĻļāĻŋ āĻ¸āĻŽāĻ¯āĻŧ āĻŦā§āĻ¯āĻ¯āĻŧ āĻāĻ°āĻŋāĻ¨āĻŋ: āĻāĻŽāĻŋ āĻāĻāĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°ā§āĻāĻŋ, āĻāĻāĻŋ āĻĻā§āĻā§āĻāĻŋ, āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻ¤āĻžāĻā§āĻ˛āĻŋ āĻĻā§āĻā§āĻāĻŋ āĻāĻŦāĻ āĻāĻāĻŋ āĻŽā§āĻā§ āĻĢā§āĻ˛ā§āĻāĻŋāĨ¤
yiisoft/yii2-āĻ¸āĻžāĻ°āĻŋ
āĻ āĻŋāĻ āĻāĻā§, āĻāĻāĻžāĻ¨ā§ āĻāĻāĻŋ āĻ āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻ¨āĻžāĻŽ āĻĨā§āĻā§ āĻ āĻ¨ā§āĻŽāĻžāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻāĻŦāĻžāĻ°, Yii2 āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻāĻ ā§āĻ° āĻ¸āĻāĻ¯ā§āĻāĨ¤ āĻāĻŽāĻžāĻā§ āĻāĻ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻāĻŦāĻ āĻāĻāĻŋ āĻāĻžāĻ°āĻžāĻĒ āĻāĻŋāĻ˛ āĻ¨āĻž, āĻ¤āĻŦā§ āĻāĻŽāĻŋ āĻāĻ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻāĻŋ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻžāĻŦāĻŋāĻ¨āĻŋ āĻ¯ā§ āĻāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖāĻ°ā§āĻĒā§ Yii2 āĻāĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻāĻ°ā§āĨ¤
āĻŦāĻžāĻāĻŋ
GitHub-āĻ āĻāĻŽāĻŋ āĻ¯āĻž āĻāĻŋāĻā§ āĻĒā§āĻ¯āĻŧā§āĻāĻŋ āĻ¤āĻž āĻāĻŋāĻ˛ āĻ¤āĻžāĻ°āĻž, āĻāĻžāĻāĻāĻžāĻāĻžāĻŽāĻ āĻāĻŦāĻ āĻŦāĻŋāĻĒā§āĻ˛ āĻ¸āĻāĻā§āĻ¯āĻ āĻāĻŽāĻŋāĻ āĻāĻžāĻĄāĻŧāĻžāĻ āĻ āĻŦāĻŋāĻļā§āĻŦāĻ¸ā§āĻ¤, āĻĒā§āĻ°āĻžāĻ¨ā§ āĻāĻŦāĻ āĻĒāĻ°āĻŋāĻ¤ā§āĻ¯āĻā§āĻ¤ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĨ¤
āĻ¸āĻŋāĻŽāĻĢāĻ¨āĻŋ/āĻŽā§āĻ¸ā§āĻā§āĻāĻžāĻ°ā§ āĻĢāĻŋāĻ°ā§ āĻ¯āĻžāĻ¨, āĻĒā§āĻ°āĻ¯ā§āĻā§āĻ¤āĻŋāĻāĻ¤ āĻŦāĻŋāĻŦāĻ°āĻŖ
āĻāĻŽāĻžāĻā§ āĻāĻ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋāĻāĻŋ āĻŦā§āĻ° āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻāĻŦāĻ āĻāĻ°āĻ āĻāĻŋāĻā§ āĻ¸āĻŽāĻ¯āĻŧ āĻŦā§āĻ¯āĻ¯āĻŧ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻāĻŽāĻŋ āĻ¸āĻā§āĻˇāĻŽ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĻžāĻŽāĨ¤ āĻĻā§āĻāĻž āĻā§āĻ˛ āĻ¯ā§ āĻ¸āĻŦāĻāĻŋāĻā§ āĻŦā§āĻļ āĻ¸āĻāĻā§āĻˇāĻŋāĻĒā§āĻ¤ āĻāĻŦāĻ āĻ¸āĻšāĻ āĻāĻŋāĻ˛āĨ¤ āĻŦāĻžāĻ¸āĻā§ āĻāĻ¨āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻā§āĻ āĻāĻžāĻ°āĻāĻžāĻ¨āĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋ, āĻāĻžāĻ°āĻŖ... āĻāĻŽāĻžāĻ° āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻāĻžāĻ¯āĻŧāĻžāĻ° āĻāĻŦāĻ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻĨāĻžāĻāĻžāĻ° āĻāĻĨāĻž āĻāĻŋāĻ˛āĨ¤
āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻ§āĻžāĻĒ:
- āĻāĻŽāĻ°āĻž āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ āĻ¯āĻž āĻā§āĻŦāĻ˛ āĻāĻ˛āĻ¯ā§āĻā§āĻ¯ āĻšāĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤
- āĻāĻŽāĻ°āĻž āĻ¸ā§āĻā§āĻ˛āĻŋāĻā§ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ°āĻĄā§āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻ°ā§ āĻŽā§āĻĄāĻŧāĻžāĻ¨ā§ (āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻĨā§āĻā§ āĻā§āĻ˛āĻžāĻ¸)
- āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻ˛ā§āĻā§āĻāĻžāĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖā§ āĻāĻ "āĻŦāĻŋāĻŦāĻ°āĻŖāĻāĻžāĻ°ā§āĻĻā§āĻ°" āĻŽā§āĻĄāĻŧāĻžāĻ¨ā§
- MessageBus āĻĻā§āĻˇā§āĻāĻžāĻ¨ā§āĻ¤ā§ HandlersLocator āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻā§āĻā§
- āĻāĻŽāĻ°āĻž āĻ¸ā§āĻ¨ā§āĻĄāĻžāĻ°āĻ˛ā§āĻā§āĻāĻžāĻ°ā§ `āĻ¸ā§āĻ¨ā§āĻĄāĻžāĻ° āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸` āĻāĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻ āĻĒāĻžāĻ¸ āĻāĻ°āĻŋ, āĻāĻŽāĻžāĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ `āĻ°ā§āĻĄāĻŋāĻ¸ āĻā§āĻ°āĻžāĻ¨ā§āĻ¸āĻĒā§āĻ°ā§āĻ` āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ, āĻ¯āĻž āĻāĻāĻāĻŋ āĻ¸ā§āĻ¸ā§āĻĒāĻˇā§āĻ āĻāĻĒāĻžāĻ¯āĻŧā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§
- MessageBus āĻāĻĻāĻžāĻšāĻ°āĻŖā§ SendersLocator āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻā§āĻā§
MessageBus-āĻāĻ° āĻāĻāĻāĻŋ `->āĻĄāĻŋāĻ¸āĻĒā§āĻ¯āĻžāĻ()` āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻ˛ā§āĻā§āĻāĻžāĻ°ā§ āĻāĻĒāĻ¯ā§āĻā§āĻ¤ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ°āĻĻā§āĻ° āĻā§āĻāĻ āĻāĻ°ā§ āĻāĻŦāĻ āĻŦāĻžāĻ¸ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻĒāĻžāĻ āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ `āĻĒā§āĻ°ā§āĻ°āĻ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸` āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¤āĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒāĻžāĻ āĻžāĻ¯āĻŧ (āĻ°ā§āĻĄāĻŋāĻ¸ āĻ¸ā§āĻā§āĻ°āĻŋāĻŽ)āĨ¤
āĻ§āĻžāĻ°āĻ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ (āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ 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-āĻ āĻāĻŽāĻ°āĻž āĻĻā§āĻāĻŋ āĻāĻŋāĻ¨ā§āĻ¨ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ "āĻĒāĻ°āĻŋāĻŦāĻšāĻ¨" āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻāĻ°ā§āĻāĻŋ, āĻ¯āĻžāĻ° āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§āĻāĻāĻŋāĻ° āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ āĻ¸ā§āĻā§āĻ°ā§āĻŽā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻ¸āĻāĻ¯ā§āĻ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
āĻāĻŽāĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻŦāĻžāĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻā§ āĻ
āĻĒāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¯ā§āĻāĻžāĻ¯ā§āĻāĻāĻžāĻ°ā§ āĻ¤āĻŋāĻ¨āĻāĻŋ āĻĄā§āĻŽāĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻāĻ°ā§ āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻĄā§āĻŽā§ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋ:
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŽāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻĻā§āĻāĻžāĻŦ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻāĻāĻ¨ āĻā§āĻā§āĻ¤āĻžāĻā§ āĻāĻ āĻ¨ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ:
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();
āĻāĻāĻāĻŋ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§ āĻāĻ āĻĒāĻ°āĻŋāĻāĻžāĻ āĻžāĻŽā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž
āĻāĻŽāĻžāĻ° āĻŦā§āĻ¯āĻžāĻāĻāĻ¨ā§āĻĄā§ āĻŦāĻžāĻ¸āĻāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻāĻŽāĻŋ āĻĒā§āĻ°āĻžāĻ¨ā§ āĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻ¸ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻĨā§āĻā§ āĻĒā§āĻĨāĻ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧāĻā§āĻ˛āĻŋāĻā§ āĻāĻ˛āĻžāĻĻāĻž āĻāĻ°ā§āĻāĻŋ āĻāĻŦāĻ āĻĒā§āĻĨāĻ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋ, āĻ¯āĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻ¤ā§āĻ¯ā§āĻā§āĻ āĻ¤āĻžāĻĻā§āĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻāĻžāĻ āĻāĻ°ā§āĨ¤
āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻžāĻāĻ āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒāĻžāĻāĻĒāĻ˛āĻžāĻāĻ¨āĻāĻŋ āĻĻā§āĻāĻ¤ā§ āĻāĻāĻ°āĻāĻŽ āĻāĻŋāĻ˛:
āĻāĻŦāĻ āĻ¤āĻžāĻ° āĻĒāĻ°āĻĒāĻ°āĻ, āĻāĻŽāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻ¤ā§āĻ¨ āĻāĻžāĻ°ā§āĻ¯āĻāĻžāĻ°āĻŋāĻ¤āĻž āĻ¯ā§āĻ āĻāĻ°āĻž āĻ
āĻ¨ā§āĻ āĻ¸āĻšāĻ āĻšāĻ¯āĻŧā§ āĻā§āĻ˛, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, Rss āĻŦā§āĻ° āĻāĻ°āĻž āĻāĻŦāĻ āĻĒāĻžāĻ°ā§āĻ¸ āĻāĻ°āĻžāĨ¤ āĻāĻžāĻ°āĻŖ āĻāĻ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻŽā§āĻ˛ āĻ¸āĻžāĻŽāĻā§āĻ°ā§āĻ°āĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻ°āĻĒāĻ°ā§ WebsiteIndexHistoryPersistor-āĻāĻ° āĻŽāĻ¤ā§ RSS āĻ˛āĻŋāĻā§āĻ āĻāĻā§āĻ¸āĻā§āĻ°ā§āĻ¯āĻžāĻā§āĻāĻ° āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ°, "āĻāĻ¨ā§āĻā§āĻ¨ā§āĻ/HtmlContent" āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻāĻŋāĻ¤ā§ āĻ¸āĻĻāĻ¸ā§āĻ¯āĻ¤āĻž āĻ¨ā§āĻ¯āĻŧ, āĻāĻāĻŋ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°ā§ āĻāĻŦāĻ āĻāĻ° āĻĒāĻžāĻāĻĒāĻ˛āĻžāĻāĻ¨ āĻŦāĻ°āĻžāĻŦāĻ° āĻĒāĻāĻ¨ā§āĻĻāĻ¸āĻ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻāĻŋ āĻĒāĻžāĻ¸ āĻāĻ°ā§āĨ¤
āĻļā§āĻˇ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤, āĻāĻŽāĻ°āĻž āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻĄā§āĻŽāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻļā§āĻˇ āĻāĻ°ā§āĻāĻŋ, āĻ¯āĻžāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ¸āĻāĻ¸ā§āĻĨāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻ āĻŦāĻāĻžāĻ¯āĻŧ āĻ°āĻžāĻā§āĨ¤ āĻ¯ā§āĻŽāĻ¨ āĻāĻāĻāĻŋ āĻĻāĻžāĻ¨āĻŦ āĻā§āĻ°ā§āĻ˛ā§āĻ°ā§āĻ¸ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¨ā§āĻāĻžāĻ°āĻ¨ā§āĻā§ āĻ¯āĻžāĻāĻ¯āĻŧāĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻāĻŽāĻ¨ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ° āĻāĻŦāĻ āĻĄā§āĻŽāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¸ā§āĻĨāĻŋāĻ° āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻ¸āĻāĻ¯ā§āĻ āĻ°āĻžāĻā§āĨ¤
āĻāĻāĻ¨, āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĨā§āĻā§ āĻ¨āĻŋāĻ°ā§āĻŦāĻžāĻāĻ¨ āĻāĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§, āĻĒāĻžāĻ°ā§āĻ¸āĻŋāĻ¸ā§āĻāĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§āĻļ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻāĻāĻĄāĻŋāĻā§āĻ˛āĻŋ āĻŦāĻžāĻ¸ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻā§āĻ°āĻšā§ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ°āĻĻā§āĻ° āĻāĻžāĻā§ āĻĒā§āĻ°ā§āĻ°āĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
āĻāĻ¤ā§āĻ¸: www.habr.com