Emuláció multi-threading php használja folyam-funkció

stream_socket funkciók része a patakok és használja őket, akkor a csatlakozás létrejöttéhez és írni / olvasni az adatokat, és ne várják az előző műveletet.

Ezután alkalmazzuk a funkció egy hurokban stream_socket_client nyílás az egyes URL-aljzatba. STREAM_CLIENT_ASYNC_CONNECT zászló azt jelzi, hogy a következő vegyület megnyitásához szükséges aszinkron (várakozás nélkül a befejezése a korábbi felfedezések) és STREAM_CLIENT_CONNECT flag szükséges, hogy hozzon létre egy kliens kapcsolatot. Az array $ write_tasks mentett aljzat leírásait.

Ezután a fő hurok tömbök $ read_tasks_ és $ write_tasks_, amelyet továbbítanak stream_select funkciók vannak hozzárendelve a tömböt tárolni foglalatok írásra és olvasásra. stream_select funkció felügyeli az adatáramlást létezik, és a következő paramétereket:
  1. Egy sor deszkriptor befejezésére vár az olvasási művelet;
  2. Array tag vár befejezését az írási művelet;
  3. A helyzet bevétel-of-band adatok - "out-of-band adatok";
  4. Timeout.
A tömbök mutatók kerülnek a funkciót, és visszatérése után számának függvényében> 0, akkor menti aljzatok, készen áll a további manipuláció.

Ezután keresünk mi aljzatok állnak rendelkezésre adatok rögzítésére. Ha kell valami mást, hogy küldjön a végső válasz - Törli a jelenlegi leíró tömb rögzítésére és kiírja a tömb olvasásra. Ezután küldje el a szükséges http-fejlécek a tartalom.

Továbbá, a foreach ciklus megjelenésű aljzattal olvasásra, tartsa a tartalmát a sorban eredmény $, távolítsa el a fogantyút a tömb olvasási és zárja be az aljzatba. A tartalom a string $ eredmény menti tömb $ eredményeket. Végezzük ezeket a műveleteket, amíg van nyitva foglalat.

Miután a program futása vett tartalom található, az array $ eredményeket.

Tehát, mi tekinthető a megoldást a problémára az alkalmazás stream_socket funkciók a következő cikkben úgy aszinkron socket versenyez multi-threading PHP.