දිගු ඡන්ද විමසීම, වෙබ්සොකට්, සර්වර්-එවන ලද සිදුවීම් (එස්එස්ඊ) සහ වල්ගා තරුව යනු කුමක්ද?


1057

මම සමහර ලිපි කියවීමට උත්සාහ කර ඇත, නමුත් සංකල්ප පිළිබඳ මා තවමත් පැහැදිලි නැත.

මෙම තාක්ෂණයන් මොනවාදැයි මට පැහැදිලි කිරීමට යමෙකු කැමතිද:

  1. දිගු ඡන්ද විමසීම
  2. සේවාදායකයා විසින් එවන ලද සිදුවීම්
  3. වෙබ්සොකට්
  4. වල්ගා තරුව

සෑම අවස්ථාවකම මට හමු වූ එක් දෙයක් නම්, සේවාදායකය සම්බන්ධතාවයක් විවෘතව තබා සේවාදායකයාට දත්ත තල්ලු කරයි. සම්බන්ධතාවය විවෘතව තබා ගන්නේ කෙසේද, සහ සේවාදායකයා තල්ලු කළ දත්ත ලබා ගන්නේ කෙසේද? (සේවාදායකයා දත්ත භාවිතා කරන්නේ කෙසේද, සමහර කේත උදව් විය හැකිද?)

දැන්, මම ඒවායින් එකක් තත්‍ය කාලීන යෙදුමක් සඳහා භාවිතා කළ යුතුය. වෙබ්සොකට් ගැන මට බොහෝ දේ අසන්නට ලැබුණි (socket.io [a node.js පුස්තකාලය සමඟ) නමුත් PHP නැත්තේ ඇයි?


1
තථ්‍ය කාලීන වෙබ්සොකට් හෝ වෙබ්ආර්ටීසී? Php හි වෙබ්සොකට් සඳහා පුස්තකාලයක් ඇත, එය ZMQ හෝ සොකට් ක්‍රමලේඛ භාවිතා කරමින් වැඩ කිරීම සඳහා අමතර කේත ලිවීමට අවශ්‍ය වේ, මේ සඳහා nodeJs ගොඩනගා ඇති බැවින් එය පහසුවෙන් ලබා ගත හැකිය. වෙබ්සොකට් පීඑච්පී හි පහසුවෙන් ලබා ගත නොහැකි වීමට හේතුව නම්, ඔබට අතිරේක පර්යන්තයක් ධාවනය කර එය ක්‍රියාත්මක කර තබා ගැනීමයි. එවිට වෙබ්සොකට් සේවාදායකය පහසුවෙන් ලබා ගත හැකිය, ඔබට සේවාදායකයන් දෙකක් පහළ මට්ටමේ ඇත. සහ ව්‍යුහය, php යනු ජාවාස්ක්‍රිප්ට් වැනි සිදුවීම් ව්‍යුහයක් නොවන බැවින් වෙබ්සොකට් පණිවිඩ අල්ලා ගැනීමට සහ යැවීමට සිදුවීම් ව්‍යුහයක් භාවිතා කරයි.
PauAI

මීට අමතරව: ධූමකේතුව සහ සර්වර්සෙන්ට් සිදුවීම් යනු සේවාදායකයන් 2 ක් නිර්මාණය නොකර තථ්‍ය කාලය (සැබවින්ම නොවේ) සාක්ෂාත් කර ගැනීමේ PHP හි ක්‍රියාකාරීත්වයයි.
PauAI

Answers:


2101

පහත උදාහරණ වල සේවාදායකයා බ්‍රව්සරය වන අතර සේවාදායකය වෙබ් අඩවිය සත්කාරක වෙබ් සේවාදායකය වේ.

ඔබට මෙම තාක්ෂණයන් තේරුම් ගැනීමට පෙර, ඔබ මුලින්ම සම්භාව්‍ය HTTP වෙබ් ගමනාගමනය තේරුම් ගත යුතුය .

නිත්‍ය HTTP:

  1. සේවාදායකයෙක් සේවාදායකයෙකුගෙන් වෙබ් පිටුවක් ඉල්ලා සිටී.
  2. සේවාදායකයා ප්‍රතිචාරය ගණනය කරයි
  3. සේවාදායකයා සේවාදායකයාට ප්‍රතිචාරය යවයි.

HTTP

අජැක්ස් ඡන්දය:

  1. සේවාදායකයෙක් සාමාන්‍ය HTTP භාවිතා කරමින් සේවාදායකයකුගෙන් වෙබ් පිටුවක් ඉල්ලා සිටී (ඉහත HTTP බලන්න).
  2. සේවාදායකයා විසින් ඉල්ලූ වෙබ් පිටුව ලබා ගන්නා අතර, ජාවාස්ක්‍රිප්ට් පිටුවේ ක්‍රියාත්මක කරයි, එය සේවාදායකයෙන් ගොනුවක් නියමිත වේලාවට ඉල්ලයි (උදා: තත්පර 0.5).
  3. සේවාදායකයා සෑම ප්‍රතිචාරයක්ම ගණනය කර සාමාන්‍ය HTTP ගමනාගමනය මෙන් එය ආපසු යවයි.

අජැක්ස් ඡන්දය

අජැක්ස් දිගු ඡන්දය:

  1. සේවාදායකයෙක් සාමාන්‍ය HTTP භාවිතා කරමින් සේවාදායකයකුගෙන් වෙබ් පිටුවක් ඉල්ලා සිටී (ඉහත HTTP බලන්න).
  2. සේවාදායකයාට ඉල්ලූ වෙබ් පිටුව ලැබෙන අතර සේවාදායකයෙන් ගොනුවක් ඉල්ලා සිටින පිටුවේ ජාවාස්ක්‍රිප්ට් ක්‍රියාත්මක කරයි.
  3. සේවාදායකයා ඉල්ලූ තොරතුරු සමඟ වහාම ප්‍රතිචාර නොදක්වන නමුත් නව තොරතුරු ලබා ගන්නා තෙක් බලා සිටී.
  4. නව තොරතුරු ඇති විට, සේවාදායකයා නව තොරතුරු සමඟ ප්‍රතිචාර දක්වයි.
  5. සේවාදායකයාට නව තොරතුරු ලැබෙන අතර වහාම වෙනත් ඉල්ලීමක් සේවාදායකයට යවා ක්‍රියාවලිය නැවත ආරම්භ කරයි.

අජැක්ස් දිගු ඡන්දය

HTML5 සේවාදායකයා විසින් එවන ලද සිදුවීම් (SSE) / EventSource:

  1. සේවාදායකයෙක් සාමාන්‍ය HTTP භාවිතා කරමින් සේවාදායකයකුගෙන් වෙබ් පිටුවක් ඉල්ලා සිටී (ඉහත HTTP බලන්න).
  2. සේවාදායකයාට ඉල්ලූ වෙබ් පිටුව ලැබෙන අතර සේවාදායකයට සම්බන්ධතාවයක් විවෘත කරන පිටුවේ ජාවාස්ක්‍රිප්ට් ක්‍රියාත්මක කරයි.
  3. නව තොරතුරු ඇති විට සේවාදායකයා විසින් සේවාදායකයාට සිදුවීමක් යවයි.

    • සේවාදායකයේ සිට සේවාදායකයා දක්වා තත්‍ය කාලීන ගමනාගමනය, බොහෝ විට ඔබට අවශ්‍ය වන්නේ එයයි
    • ඔබට සිදුවීම් ලූපයක් ඇති සේවාදායකයක් භාවිතා කිරීමට අවශ්‍ය වනු ඇත
    • වෙනත් වසම් වලින් සේවාදායකයන් සමඟ සම්බන්ධතා පැවැත්විය හැක්කේ නිවැරදි CORS සැකසුම් සමඟ පමණි
    • ඔබට තවත් කියවීමට අවශ්‍ය නම්, මේවා ඉතා ප්‍රයෝජනවත් බව මට පෙනී ගියේය: (ලිපිය) , (ලිපිය) , (ලිපිය) , (නිබන්ධනය) .

HTML5 SSE

HTML5 වෙබ්සොකට්:

  1. සේවාදායකයා සාමාන්‍ය http භාවිතා කරමින් සේවාදායකයෙකුගෙන් වෙබ් පිටුවක් ඉල්ලා සිටී (ඉහත HTTP බලන්න).
  2. සේවාදායකයාට ඉල්ලූ වෙබ් පිටුව ලැබෙන අතර සේවාදායකය සමඟ සම්බන්ධතාවයක් විවෘත කරන පිටුවෙහි ජාවාස්ක්‍රිප්ට් ක්‍රියාත්මක කරයි.
  3. නව දත්ත (දෙපසින්) ඇති විට සේවාදායකයාට සහ සේවාදායකයාට දැන් එකිනෙකාට පණිවිඩ යැවිය හැකිය.

    • සේවාදායකය වෙතින් අදාල ග්රාහකයා සැබෑ කාලීන රථවාහන හා සේවාදායකයාට සිට සේවාදායකය වෙත
    • ඔබට සිදුවීම් ලූපයක් ඇති සේවාදායකයක් භාවිතා කිරීමට අවශ්‍ය වනු ඇත
    • වෙබ්සොකට් සමඟ වෙනත් වසමකින් සේවාදායකයක් සමඟ සම්බන්ධ විය හැකිය.
    • තෙවන පාර්ශවීය සත්කාරක වෙබ්සොකට් සේවාදායකයක් භාවිතා කිරීමට ද හැකිය, උදාහරණයක් ලෙස පුෂර් හෝ වෙනත් අය . මේ ආකාරයෙන් ඔබට ක්‍රියාත්මක කිරීමට සිදුවන්නේ සේවාදායකයාගේ පැත්ත පමණි, එය ඉතා පහසුය!
    • ඔබට තවත් කියවීමට අවශ්‍ය නම්, මේවා ඉතා ප්‍රයෝජනවත් බව මට පෙනී ගියේය: ( ලිපිය ), (ලිපිය) ( නිබන්ධනය ).

HTML5 වෙබ්සොකට්

වල්ගා තරුව:

වල්ගා තරුව යනු HTML5 ට පෙර තාක්ෂණික එකතුවකි, එය තථ්‍ය කාලීන යෙදුම් සාක්ෂාත් කර ගැනීම සඳහා ප්‍රවාහය සහ දිගු ඡන්දය භාවිතා කරයි. විකිපීඩියාව හෝ මෙම ලිපිය පිළිබඳ වැඩිදුර කියවන්න .


දැන්, මම ඒවායින් එකක් තත්‍ය කාලීන යෙදුමක් සඳහා භාවිතා කළ යුතුය (මට කේත කිරීමට අවශ්‍ය බව). වෙබ්සොකට් ගැන මට බොහෝ දේ අසන්නට ලැබුණි (socket.io [a node.js පුස්තකාලය සමඟ) නමුත් PHP නැත්තේ ඇයි?

ඔබ පරීක්ෂා, WebSockets සමග PHP භාවිතා කළ හැකි උග්ර .


21
මේක නම් නියමයි! මම එස්එස්ඊ හි කියවන අතර මෙම ලිපිය සොයා ගත්තා, එය ඉතා හොඳයි - මම දැන් දේවල් සංසන්දනය කළාක් මෙන්, ඔබටත් එස්එස්ඊ මෙහි ඇතුළත් කළ හැකිද, එවිට අපට වෙබ්සොකට් සමඟ ඇති වෙනස හරස් පරීක්‍ෂා කළ හැකිද?
දර්ශකය

1
I ටයිම් ඔහ් ඒකද? මම හිතුවේ SSE යන්නෙන් අදහස් කළේ සේවාදායකය විසින් යවන ලද සිදුවීම් බවයි. කෙසේ වෙතත්, ස්තූතියි, මම දැන් එය දකිමි.
දර්ශකය

1
Q: php වලින් කියමු ඔබ වෙබ්සොකට් භාවිතා කරන බව මගේ සේවාදායකයට සම්බන්ධ සෑම සේවාදායකයෙක්ම ws භාවිතා කරයි: ඔහුට / ඇයට එක් නූල් එකක් වෙන් කර ඇති අතර සාමාන්‍ය ඉල්ලීම් වලදී මෙන් එහි ප්‍රමාණය ඩොලර් 2mb වනු ඇත? එය nodejs වලින් වෙනස් වන්නේ කෙසේද? සමගාමී සේවාදායකයින් කීදෙනෙකුට nodejs හැසිරවිය හැකිද සහ එය බිඳී ගිය විට සිදුවන්නේ කුමක්ද?
මුහම්මද් උමර්

5
විසඳුම් දෙකෙන්ම ඔබට එකම දේ කළ හැකි නමුත් යාන්ත්‍රණය වෙනස් වේ. දිගු ඡන්ද විමසීම් 'නිත්‍ය' http දත්ත භාවිතා කරයි, එස්එස්ඊ වෙනස් යටින් පවතින ප්‍රොටෝකෝලයක් භාවිතා කරන අතර දිගු ඡන්දයට සාපේක්ෂව වෙනස් සේවාදායක සැකසුමක් අවශ්‍ය වේ.
ටයිම්

2
ඔබට අවශ්‍ය නම් අපාචේ භාවිතා කළ හැකිය. නමුත් බොහෝ දෙනෙක් Node.js භාවිතා කරන්නේ එයට සිදුවීම් ලූපයක් ඇති බැවිනි. නමුත් අපාචේ සඳහා, stackoverflow.com/questions/12203443/…
ටයිම්

37

ටයිම් ඔහුගේ විශිෂ් answer පිළිතුර සඳහා විශාල පරිශ්‍රමයක් දැරීය, නමුත් මම හිතන්නේ OPs ප්‍රශ්නයේ හරය වන්නේ මෙම තාක්ෂණයන් එක් එක් තාක්‍ෂණය ක්‍රියාත්මක වන ආකාරය වෙනුවට PHP හා සම්බන්ධ වන්නේ කෙසේද යන්නයි.

Html, css, සහ javascript යන පැහැදිලි සේවාදායක පාර්ශවයට අමතරව වෙබ් සංවර්ධනයේදී වැඩිපුරම භාවිතා වන භාෂාව PHP වේ. තථ්‍ය කාලීන යෙදුම් සම්බන්ධයෙන් PHP හට ප්‍රධාන ගැටළු 2 ක් ඇත:

1) PHP ඉතා මූලික CGI ලෙස ආරම්භ විය. PHP මුල් අවධියේ සිට බොහෝ දුරට ප්‍රගතියක් ලබා ඇත, නමුත් එය සිදු වූයේ කුඩා පියවර වලින්. අද වන විට පීඑච්පී කාවැද්දිය හැකි හා නම්‍යශීලී සී පුස්තකාලය බවට පත්වන විට මිලියන ගණනක් පරිශීලකයින් සිටි අතර, ඔවුන්ගෙන් බොහෝ දෙනෙක් එය කලින් ක්‍රියාත්මක කිරීමේ ආකෘතිය මත රඳා පැවතුනි, එබැවින් එයින් ගැලවීමට තවමත් ස්ථිර උත්සාහයක් ගෙන නොමැත. cgi ආකෘතිය අභ්‍යන්තරව. විධාන රේඛා අතුරුමුහුණත පවා PHP පුස්තකාලය (ලිනක්ස් මත libphp5.so, කවුළු මත php5ts.dll, ආදිය) ඉල්ලා සිටියි. එය තවමත් කේතයක් ක්‍රියාත්මක කරන්නේ එය “පිටුවක්” ගොඩනඟා එහි ජීවන චක්‍රය අවසන් කළ යුතුය. එහි ප්‍රති As ලයක් ලෙස, බහු-නූල් හෝ සිදුවීම් මත පදනම් වූ ක්‍රමලේඛ සඳහා (PHP පරිශීලක අවකාශය තුළ) ඉතා සුළු සහයෝගයක් ඇති අතර, එය දැනට තත්‍ය කාලීන, බහු-පරිශීලක යෙදුම් සඳහා ප්‍රායෝගික නොවන බවට පත් කරයි.

PHP පරිශීලක අවකාශයේ සිදුවීම් ලූප (ලිබෙන්ට් වැනි) සහ නූල් (pthreads වැනි) සැපයීමට PHP සතුව දිගු ඇති බව සලකන්න, නමුත් ඉතා සුළු යෙදුම් මේවා භාවිතා කරයි.

2) PHP තවමත් කසළ එකතු කිරීමේදී සැලකිය යුතු ගැටළු ඇත. මෙම ගැටළු නිරන්තරයෙන් වැඩිදියුණු වී ඇතත් (ඉහත විස්තර කර ඇති පරිදි ජීවන චක්‍රය අවසන් කිරීම සඳහා ඇති ලොකුම පියවර මෙය විය හැකිය), දිගුකාලීනව ක්‍රියාත්මක වන PHP යෙදුම් නිර්මාණය කිරීමේ හොඳම උත්සාහයන් පවා නිතිපතා නැවත ආරම්භ කිරීම අවශ්‍ය වේ. මෙය තත්‍ය කාලීන යෙදුම් සඳහාද ප්‍රායෝගික නොවන බවට පත් කරයි.

මෙම ගැටළු නිරාකරණය කිරීම සඳහා PHP 7 ඉතා හොඳ පියවරක් වනු ඇති අතර තත්‍ය කාලීන යෙදුම් සඳහා වේදිකාවක් ලෙස එය ඉතා හොඳ බලාපොරොත්තුවක් ඇති බව පෙනේ.


2
එක් කුඩා නිවැරදි කිරීමක්: මෙහි දැකිය හැකි පරිදි, PHP සෑම විටම C හි ලියා ඇත: Museum.php.net/php1 එසේම, “අඩුවෙන් භාවිතා කරන (නමුත් වඩා ජනප්‍රිය)” ස්වයං-පරස්පර විරෝධී ය; සමහර විට ඔබ අදහස් කරන්නේ "වඩා මෝස්තරයක්" ද?
IMSoP

@IMSoP - නිවැරදි කිරීම සඳහා ස්තූතියි, මම දශකයකට වැඩි කාලයක් තිස්සේ PHP භාවිතා කර ඇති අතර එහි මූලයන් පර්ල්හි ඇති බව සැමවිටම හැඟී ගොස් ඇත. PHP ඉතිහාස පිටුව පැහැදිලිවම සහය දක්වන්නේ එය මුලින් C ද වූ බවය. මම මොහොතක් සොයාගත් පසු මගේ පිළිතුර සංස්කරණය කරමි.
JSON

පර්ල් පිළිබඳ නිල ලියකියවිලි සමඟ හොඳින් මිශ්‍ර නොවන බැවින් මම එය ඉවත් කරමි, නමුත් මෙය තවමත් PHP හි මුල් සංවර්ධනයේ ව්‍යාකූල ප්‍රදේශයකි.
JSON

තථ්‍ය කාලීන යෙදුම් සඳහා වේදිකාවක් ලෙස PHP 7 ඉතා හොඳ යැයි පෙනේ? තත්‍ය කාලීන යෙදුම් සඳහා PHP7 හි වැඩි දියුණු කිරීම් / වෙනස් කිරීම් මොනවාද?
මම නැවත එන්න


9

මම මේවා ගැන සටහනක් තැබීමට උත්සාහ කර ඇති අතර ජාවා දෘෂ්ටිකෝණයකින් උදාහරණ එකතු කර ලියා ඇත .

ජාවා සංවර්ධකයින් සඳහා HTTP

ප්‍රතිලෝම අජැක්ස් - පැරණි විලාසිතාව

සේවාදායක පැත්තේ අසින්ක් හැසිරවීම

ප්‍රතිලෝම අජැක්ස් - නව විලාසිතාව

සේවාදායකයා විසින් සිදුවීම් යවන ලදි

එකම විෂය පිළිබඳව සොයා බලන ඕනෑම ජාවා සංවර්ධකයෙකු සඳහා එය මෙහි තැබීම.


Lex ඇලෙක්සැන්ඩර් ඩන් එය ගෙන ඒමට ස්තූතියි. යාවත්කාලීන කළ
ජෝන්

1

ඔබගේ වෙබ් යෙදුම තුළ ඔබට පහසුවෙන් Node.JS භාවිතා කළ හැක්කේ තත්‍ය කාලීන සන්නිවේදනය සඳහා පමණි. වෙබ්සොකට් ගැන කතා කරන විට Node.JS සැබවින්ම බලවත්ය. එබැවින් "Node.js හරහා PHP දැනුම්දීම්" විශිෂ්ට සංකල්පයක් වනු ඇත.

මෙම උදාහරණය බලන්න: PHP සහ Node.js සමඟ තත්‍ය කාලීන චැට් යෙදුමක් නිර්මාණය කිරීම

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.