ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° OCI8 Fast Application Notification (FAN)

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° FAN обСспСчиваСт быстроС ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² случаС сбоСв, Ρ‡Ρ‚ΠΎ обСспСчиваСт Π²Ρ‹ΡΠΎΠΊΡƒΡŽ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Oracle. Π­Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ позволяСт PHP OCI8 скрипту ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ оповСщСния Π² случаС Ссли Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ сСрвСр, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½Π° Π·Π°ΠΏΡƒΡ‰Π΅Π½Π°, становятся нСдоступны. Π‘Π΅Π· FAN, OCI8 ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄Π²ΠΈΡΠ½ΡƒΡ‚ΡŒ, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΎ врСмя оТидания ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π° ошибка, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ нСсколько ΠΌΠΈΠ½ΡƒΡ‚. Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ FAN Π² OCI8 позволяСт прилоТСниям ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ошибки ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΊ доступному экзСмпляру Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π±Π΅Π· оТидания ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΎΡ‚ нСдоступной Π±Π°Π·Ρ‹.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° FAN доступна Ссли клиСнтскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Oracle, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ собран PHP, ΠΈ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Oracle ΠΈΠΌΠ΅ΡŽΡ‚ Π²Π΅Ρ€ΡΠΈΡŽ 10gR2 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ позднюю.

FAN Π΄Π°Ρ‘Ρ‚ прСимущСства ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ кластСрной Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Oracle (RAC), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ доступной Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Oracle Data Guard с Π±Ρ€ΠΎΠΊΠ΅Ρ€ΠΎΠΌ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ события FAN создаваСмыС ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΉ Π±Π°Π·Ρ‹ Π² Ρ€Π΅ΠΆΠΈΠΌ основной. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ установлСнныС экзСмпляры Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΡΡ‹Π»Π°Ρ‚ΡŒ события FAN ΠΏΡ€ΠΈ своём пСрСзапускС.

Для Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… соСдинСний, ΠΊΠΎΠ³Π΄Π° сСрвСр ΠΈΠ»ΠΈ экзСмпляр Π±Π°Π·Ρ‹ становятся нСдоступны, Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π° ошибка соСдинСния для Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ модуля OCI8. ΠŸΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ PHP-скрипта Π±ΡƒΠ΄Π΅Ρ‚ установлСно соСдинСниС с Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌ экзСмпляром Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ OCI8 ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ Π·Π°Ρ‡ΠΈΡ‰Π°Π΅Ρ‚ всС ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠ΅ соСдинСния, Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹Π΅ ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ΠΌ сСрвСра ΠΈΠ»ΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹Π΅ соСдинСния Π±ΡƒΠ΄ΡƒΡ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π±Π΅Π· оглядки Π½Π° ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с сСрвисом.

Если oci8.events установлСно ΠΊΠ°ΠΊ On, Ρ‚ΠΎ прСдполагаСтся, Ρ‡Ρ‚ΠΎ oci8.ping_interval установлСно Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ -1, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ событий FAN прСдоставляСт ΠΏΡ€ΠΎΠ°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠΌΠΈ соСдинСниями.

Для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ FAN Π² PHP OCI8, собСритС PHP OCI8 с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ Oracle 10gR2 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΠΌΠΈ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги:

  • Под Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ΠΎΠΌ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ администратора Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Ρ‚ΠΈΠΏΠ° SQL*Plus Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ сСрвису Π±Π°Π·Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ оповСщСния FAN, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ:

        SQL> execute dbms_service.modify_service(
                       SERVICE_NAME        => 'sales',
                       AQ_HA_NOTIFICATIONS => TRUE);
    
  • Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² php.ini

        oci8.events = On
    
  • Если ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ошибки соСдинСния OCI8, ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»ΠΎ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈ пСрСзапуск запросов.
  • ЗапуститС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ соСдиняясь с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… Oracle вСрсии 10gR2 ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅.
οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ добавляли примСчания для страницы