Kirjoittaja Aihe: Hetikeskustelu (chat) php:llä  (Luettu 3526 kertaa)

teele

  • Käyttäjä
  • Viestejä: 831
    • Profiili
Hetikeskustelu (chat) php:llä
« : 27.08.23 - klo:09.04 »

Jos haluaisi tehdä hetikeskusteluohjelman php:llä, kuviitelisin, että suunnilleen ainoa mahdollisuus olisi seurata palvelimella olevaa keskustelutiedostoa ja siihen mahdollisesti keskustelijoiden lisäämiä kommnetteja. Mitään select- tai poll-ominaisuutta php:hen ei tietenkään voine sisältyä, koska se vastannee vain vain yhden sivun hoitamisesta?

Näillä oletuksilla luulisi netistä löytyvän useita helppoja ja lyhyitä php-hetikeskusteluohjelmia, mutta montaa ei ole vielä tullut vastaan. Se ei ehkä haittaa, jos haluaa kokeilla hetikeskusteleun tekemistä itse. Mutta sisältyykö hommaan jotain salatiedettä, minkä vuoksi hetikeskustelujen toteuttaminen todellisuudessa olisikin niin vaativaa, että helppoja koodeja netissä ei ole.

Tässä vaiheessa kuvittelisin, että pienen keskusteluohjelman voisi tehdä jopa itse. Mutta mikä olisi sellainen asia, joka sitten tulee oikeasti käytännönongelmana vasstaan, jos alkaa tehdä hetikeskustluohjelmaa pienellä palvelimella.



Whig

  • Käyttäjä
  • Viestejä: 333
  • puppu-generaattori
    • Profiili
    • localhost
Vs: Hetikeskustelu (chat) php:llä
« Vastaus #1 : 27.08.23 - klo:09.27 »
Miten tämä "hetikeskustelu" on erilainen, kuin ihan normaali chat?

Joskus 10-15v sitten tein muutaman ihmisen porukalle pienen chatin PHP:llä jossa yksi scripti vain otti formilta viestin vastaan ja kirjoitti sen chat.txt tyypiseen tiedostoon ja toinen scripti sitten
luki sen sieltä ja muotoili halutusti nettisivulle muuttaen smileyt merkeistä grafiikaksi (eli <img src=""> jne) ja linkit klikattaviksi (<a href=""> jne...)
« Viimeksi muokattu: 27.08.23 - klo:09.33 kirjoittanut Whig »
puppu-generaattorin outputtia
"minä olen kansainvälinen supertähti"

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11449
    • Profiili
    • Tomin kotisivut
Vs: Hetikeskustelu (chat) php:llä
« Vastaus #2 : 27.08.23 - klo:10.45 »
Hetikeskustelu lienee käännös instant messengeristä eli tunnetummin pikaviestimestä. Luulisin, että tässä se tähdellinen ominaisuus on uusien viestien ilmestyminen käyttäjälle ilman, että mitään tarvitsee tehdä.

Itse varmaan lähestyisin tätä niin, että palvelimelta ladataan sivu, jossa on jonkin verran JavaScriptiä, joka pollaa palvelinta ja sitten joko lataa koko sivun uudestaan tai ainoastaan lisää uudet viestit sivulle, kun palvelin kertoo uudempia viestejä olevan. Ensin mainitusta voi kyllä aloittaa, mutta se voi olla ärsyttävä, jos on kirjoittamassa viestiä ja yhtäkkiä sivu latautuu uudestaan mahdollisesti kadottaen jo kirjoitetun viestin. Siitä voi kuitenkin sitten siirtyä toiseen versioon tietäen, että pollaus toimii jo.

PHP:n puolella tämä tarkoittaa, että jo saadut viestit listaavan sivun lisäksi tarvitset tavan tarkistaa, milloin viimeisin uusi viesti on lisätty. (Sen voisi periaatteessa myös sisällyttää HTTP-otsakkeisiin ja kysellä JavaScriptistä HEAD-kutsulla, milloin sivu on päivittynyt.) Lisäksi tarvitset toki lomakkeen käsittelyt viestin lähetykseen, ja tuon toisen ratkaisun tapauksessa voisi olla hyödyllistä pystyä lähettämään palvelimelle saapuneet (uudet) viestit ilman ympäröivää HTML-koodia. (Sen voisi tehdä myös katsomalla pyynnön otsakkeista sisältötyypin ja lähettämällä sisällön pyydetyssä muodossa eli HTML:n sijaan kysytään vaikka JSON-muotoa.)

Tähän lisäksi on toki syytä tehdä tavalliset sisällön sanitoinnit, ettei kukaan lisää sivulle omaa JavaScriptiään, ja myöskin CORS-testit, mutta niiden aika voi olla sitten, kun jonkinlainen toimiva versio on olemassa. Valmiit ohjelmistokehykset antaisivat toki työkaluja näihinkin, mutta itse tekemällä voi opiskella käytettyjä teknologioita. Toki mihinkään oikeaan käyttöön en tällaista puhtaasti PHP:llä lähtisi tekemään (enkä henkilökohtaisesti valitsisi PHP:ä ensinkään).
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

teele

  • Käyttäjä
  • Viestejä: 831
    • Profiili
Vs: Hetikeskustelu (chat) php:llä
« Vastaus #3 : 27.08.23 - klo:10.57 »
Lainaus
Miten tämä "hetikeskustelu" on erilainen, kuin ihan normaali chat?

Tässä vaiheessa ei mitenkään, ajatus oli vain erottaa samanaikaisesti käytävä keskustelu foorumikeskustelusta.

Lainaus
Itse en käyttäisi PHP:tä ensinkään

Mikä olisi sopivampi tapa, mitä huonoja puolia php-käyttöön liittyy.

Tässä vaiheessa en vielä osaa ajatella kuin ensimmäisessä  tämän säikeen vastauksessa kuvatun kaltaista totetutasta. Mitä tapahtuisi, jos keskustelijamäärä nousisi tällaisessa toteutuksessa yli "pienien piirin".


Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11449
    • Profiili
    • Tomin kotisivut
Vs: Hetikeskustelu (chat) php:llä
« Vastaus #4 : 27.08.23 - klo:11.17 »
Lainaus
Itse en käyttäisi PHP:tä ensinkään

Mikä olisi sopivampi tapa, mitä huonoja puolia php-käyttöön liittyy.

Henkilökohtaisesti en pidä PHP:stä kielenä laisinkaan. Sillä on liian helppoa tehdä hölmöjä virheitä, joiden debuggaaminen on suhteetoman hankalaa. (Tai ehkä en vain osaa.) Tietenkin jos sitä osaa ja tykkää kirjoittaa, niin periaatteessa sillä kyllä saa ihan samat asiat aikaiseksi kuin muillakin kielillä ainakin web-kehityksessä.

Tätä ei nyt ole tarkoitettu ohjeeksi, mutta itse valitsisin taustaosan toteutuskieleksi Pythonin tai Rustin. Pythonin kanssa käyttäisin esimerkiksi flask-ohjelmistokehystä tai Djangoa, jos varsinkin sivusto käyttäisi sellaista muutenkin. Rustille on myös soveltuvia ohjelmistokehyksiä, mutta kielenä se ei ole yhtä aloittelijaystävällinen.
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

Whig

  • Käyttäjä
  • Viestejä: 333
  • puppu-generaattori
    • Profiili
    • localhost
Vs: Hetikeskustelu (chat) php:llä
« Vastaus #5 : 27.08.23 - klo:13.29 »
Mikä olisi sopivampi tapa, mitä huonoja puolia php-käyttöön liittyy.

Tässä vaiheessa en vielä osaa ajatella kuin ensimmäisessä  tämän säikeen vastauksessa kuvatun kaltaista totetutasta. Mitä tapahtuisi, jos keskustelijamäärä nousisi tällaisessa toteutuksessa yli "pienien piirin".

En ole ohjelmoinut mitään (ellei bash scriptejä yms. oteta huomioon) yli 10vuoteen joten nykyään on tod.näk. toisenlaisiakin tapoja tehdä asioista, kuin silloin mutta
Eri porukoiden viestit voidaan kirjoittaa eri tiedostoon jotta pysyvät varmasti erillään. Minun virityksessä oli muistaakseni vielä niin, että viestejä luettiin esim. 20 uusinta ja loput rivit siirrettiin arkistoon jotta systeemi ei satojen viestien jälkeen olisi alkanut jumittamaan.
Tämä PHP viritys hoiti hommansa oikein hyvin siihen asti, kun sitä ei enää tarvittu ja pyöri omalla Linux palvelimella Apachen avulla ja, kun ei ollut sen suurempaa tarvetta suojata chattia niin käyttäjät hoidin ihan .htaccess:n avulla.
Itse chatti sitten näytettiin HTML:n refreshiä käyttäen päivättäen sivu automaattisesti 60sekunin välein. Olihan se viritys mutta tosiaan hoiti 100% hommansa niin kauan, kuin sitä tarvittiin ja siihen oli helppo tehdä lisäominaisuuksia sen mukaan mitä halusin =)
puppu-generaattorin outputtia
"minä olen kansainvälinen supertähti"

Jere Sumell

  • Käyttäjä
  • Viestejä: 727
  • Talous, Hallinto ja Markkinointi (AMK, 2017),B.B.A
    • Profiili
    • Tietokone-blogi
Vs: Hetikeskustelu (chat) php:llä
« Vastaus #6 : 27.08.23 - klo:17.22 »
Mitä olen seurannut noita trendejä työmarkkinoiden osalta, minkä kielien osaajilla on kysyntää, niin pitkään jo ollut PHP laskevassa trendissä. On totta, että yhä on paljon ohjelmistoja verkossa, jotka on toteutettu jollain PHP:n versiolla, niin koodin ylläpitämisen osalta voi jotain työpaikkoja mahdollisesti olla saatavilla?

Käsittääkseni korjatkaa jos olen väärässä, ongelma tuollaisessa tiedosto palvelimelle, josta luetaan ja kirjoitetaan käyttäjien viestejä on se ongelma tyyliin vieraskirja joskus vuonna 2000, mitä siinä pitäisi olla kirjoitus ja -lukuoikeus siinä tiedostossa, niin sitten kun se on palvelimella niin eikö siihen pääse kuka tahansa ulkopuolelta manipuloimaan sitä, eli korvaamaan sisällön millä hyvänsä?

Javascript/AJAX -voisi ehkä vaikuttaa luontevammalta ratkaisulta, AJAX:han on kuin luotu reaaliaikaisten sovellusten osalta niiden kehittämiseen?

Melkein jos tykkäät PHP:llä ohjelmoida, niin perus/standardi PHP:llä nyt tuskin kannattaa lähteä yöunia menettämään, mitä itse en ole muuta kuin perehtynyt sen verran noihin PHP-frameworkkeihin, mitä niitä on tarjolla ja mitä ne tarjoavat kehittäjän eduksi, että kaikkea ei tarvitse ihan nollasta ohjelmoida itse kuitenkaan.

Djangosta se kokemus, että se osaa olla kenkkumaisen haastava. Jäänyt vähemmälle, vaikka Pythonia on tullut ajan kuluksi jonkin verran koodattua, joskaan ei mitään käyttökelpoista eikä mitään julkaisukelpoista eritotenkaan.
Free Internet and  people for humans all over the globe!

(Profiilikuvassa oma valokuvani GIMPissä editoituna Disney Classic-väripaletin väreihin ja muunnettuna bittikartta-tiedostosta vektorigrafiikaksi.)