PHP op achtergrond

Gestart doorTimkb26 reacties82 weergaven

27 berichten · pagina 1 van 2

Timkb

Lid · Topicstarter

Berichten
4.214
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Een pagina op mijn website is afhankelijk van 3 APIs en dat maakt de pagina nou niet bepaald snel. (+/- 5 sec) Nu was mijn idee, als dat mogelijk is om de API calls in de achtergrond te laten uitvoeren omdat ik de respons toch niet nodig heb.

Maar hoe?

Ik had dit al gevonden en dat is eigenlijk exact wat ik zoek. Maar bij dit script wordt soms de API call niet uitgevoerd.
0
Berichten
6.485
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Kan met jquery Ajax lijkt me?
0
Timkb

Lid · Topicstarter

Berichten
4.214
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Beetje te gevaarlijk bij APIs aangezien deze met private keys e.d. werken. En als de gebruiker weg klikt omdat de pagina geladen is worden de APIs alsnog niet uitgevoerd.
0
Thom

Lid

Berichten
10.654
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Kan je met AJAX niet gewoon iets naar een bestand van je eigen site posten,
in dat bestand doe je met php een api request oid?
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
In de database de request van de gebruiker stoppen en met een cronjob laten uitvoeren?
0
Berichten
5.274
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien

Eindhoven, Nederland

Gewoon met jQuery een PHP pagina aanroepen na het laden. Als die geladen is data terugsturen en die op de webpagina weergeven. De privatekeys zitten dan in de PHP file.
0
Timkb

Lid · Topicstarter

Berichten
4.214
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Thommity schreef:
Kan je met AJAX niet gewoon iets naar een bestand van je eigen site posten,
in dat bestand doe je met php een api request oid?
Wouterr schreef:
Gewoon met jQuery een PHP pagina aanroepen na het laden. Als die geladen is data terugsturen en die op de webpagina weergeven. De privatekeys zitten dan in de PHP file.
Zoals ik al eerder vermelde, dat is totaal niet veilig omdat gebruikers dan gewoon de benodigde vars kunnen lezen. Overigens is het geen optie want dan is de pagina direct geladen en als ze binnen die +/- 5 seconde laad tijd weer weg zijn wordt de actie abrupt afgebroken.

Het moet echt server sided.

@Lennard; Mmh, is een optie maar niet echt ideaal.
0
Berichten
5.274
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien

Eindhoven, Nederland

Nee, nogmaals. De variables kan je in de PHP files inladen, die hoeven niet via javascript.
0
Berichten
3.788
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Bij APIs is het volgens mij vaak zo dat je inderdaad met wat Response tijd zit.
Echter is de request tijd vaak helemaal niet zo hoog.
Je zou dus best via ajax 3 verschillende requests doen naar APIs en zolang de Response niet belangrijk is, wat ik uit jouw verhaal opmaak, maakt de response tijd dus niet uit.
Je moet ervoor zorgen dat de gebruiker lang genoeg op de pagina is om de 3 requests te versturen, dit kan je tegelijk doen dus kost vrijwel geen tijd.
De gebruiker kan dus wegklikken wat hij wil maar de request is al verstuurd dus de API heeft de data al ontvangen
0
Timkb

Lid · Topicstarter

Berichten
4.214
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Wouterr schreef:
Nee, nogmaals. De variables kan je in de PHP files inladen, die hoeven niet via javascript.
Kan, met grove omwegen aangezien de tekst o.i.d niet telepatisch gelezen kan worden door het bestand dat wordt aangeroepen via Ajax. Tevens blijft het onveilig, een open en blote link naar een bestand dat dingen verwerkt. (betaal verkeer in dit geval)

Inmiddels het probleem gevonden, ik host op NginX met Fast CGI aan die ignore_user_abort(1) standaard negeert. ignore_user_abort(1) zorgt ervoor dat het aangeroepen script door gaat als de verbinding wordt afgekapt wat het bovenstaande script direct doet. Met een simpele parameter in het config bestand van NginX was het opgelost en werkt ignore_user_abort(1).

@Eleky, nee hoor. Zodra de browser wordt weg geklikt stopt het aangeroepen PHP bestand ook direct. Anders zou ik hier geen post maken aangezien het bovenstaande script een socket aanmaakt naar het script en gelijk weer afkapt. Precies hetzelfde als de browser zou doen in Ajax.
0
Berichten
3.788
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Als je zeker wilt weten dat het volledig geladen wordt zonder het gewoon standaard op de pagina te zetten is een cronjob volgens mij de enige mogelijkheid
0
Berichten
35.796
Reputatie
1
Punten
0,00
Lid sinds
Laatst gezien
Je kan er hele lappen tekst over uitwijden, maar blijkbaar wil je dus dat de request door PHP wordt uitgevoerd.

Dan heb je 2 opties:
1. bij de pageview dat stukje PHP uitvoeren;
2. na de pageview dat stukje PHP uitvoeren.

Optie 1 doe je door direct in je bestand zelf die code te plakken. Maar dat wilde je dus niet, dus zul je voor optie 2 moeten gaan: cronjob. Ik snap niet waarom je dat niet gewoon doet?
Das de makkelijkste optie lijkt me.

Je zou nog kunnen kutten met output buffers en dan de code tegelijk met de oorspronkelijke pageview laten uitvoeren, maar daar kun je beter niet aan beginnen.
0
Timkb

Lid · Topicstarter

Berichten
4.214
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Het probleem met een cronjob is dat het afhankelijk is van minuten en het gaat om een push functie. Beetje dubbelzinnig aangezien de bedoeling van push direct afleveren is.

Ik merk nu vaak dat gebruikers al wegklikken voordat alle APIs klaar zijn.

Ik dacht in mijn vorige post de oplossing gevonden te hebben maar dat is toch niet het geval, mijn hoster blokkeert de functie om zombie processen te voorkomen.

Ik denk dat ik toch maar met cronjobs moet gaan werken helaas.
0
Berichten
3.788
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Als je een cronjob elke minuut laat lopen heb je volgens mij een verwaarloosbaar verschil hoor.
Of ik nu direct een push bericht krijg of over een minuut maakt niet zoveel uit
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Eleky schreef:
Als je een cronjob elke minuut laat lopen heb je volgens mij een verwaarloosbaar verschil hoor.
Of ik nu direct een push bericht krijg of over een minuut maakt niet zoveel uit
Dit inderdaad.

Veel APIs hebben sowieso een call-limiet per uur ofzo. Dus wat dat betreft is dit ook een goede optie.

Zowat elke push app maakt hier gebruik van. Facebook kijkt bijvoorbeeld om de X minuten naar nieuwe notificaties. Tweetdeck / twitter doen exact hetzelfde.

À‰chte realtime notificaties zijn vrijwel onmogelijk.
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren