Toon posts:

.JSON file Twitter script

Pagina: 1
Acties:
  • 356 views

Onderwerpen


  • Rowinio
  • Registratie: Augustus 2009
  • Laatst online: 22-11-2022
Op het internet vond ik het volgende script:

Demo: http://www.realiseweb.nl/examples/twitter/demo.php
Script: http://www.realiseweb.nl/examples/twitter/script.txt

Nu is het zo dat het PHP bestand wilt opslaan in een .JSON file. Hoe gaat dit in zijn werk, want heb een leeg bestand aangemaakt genaamd twitter.json en heb dit geupload naar de server (en op rechten 777 gezet). Hij geeft dan de volgende foutmelding aan:
Warning: fread() [function.fread]: Length parameter must be greater than 0 in /home/debxxxxx/domains/xxxx.xx/public_html/wp-content/themes/xxx/testertw.php on line 76

Warning: Invalid argument supplied for foreach() in /home/debxxxx/domains/xxxx.xx/public_html/wp-content/themes/xxx/testertw.php on line 93
Wat te doen om dit op te lossen?

Anoniem: 26306

Betere foutafhandeling inbouwen. Er wordt niet gecontroleerd of de fopen call wel gelukt is.

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Debuggen. Blijkbaar is je length-parameter 0, dus dan kun je het bestand niet lezen.

https://oneerlijkewoz.nl
I have these thoughts / so often I ought / to replace that slot / with what I once bought / 'cause somebody stole my car radio / and now I just sit in silence


  • Big4SMK
  • Registratie: September 2001
  • Laatst online: 24-05 09:04
Wat ik me voor kan stellen is dat je de file niet zelf hoeft te maken. Immers, jij hebt nu een lege file gemaakt met dus een grootte van 0. Verwijder de file eens en probeer het opnieuw :)

of bouw een check in dat als de lengte 0 is dat ie geen fread doet...immers zal hij toch geen tweets krijgen bij lengte 0 }:O

  • Rowinio
  • Registratie: Augustus 2009
  • Laatst online: 22-11-2022
Big4SMK schreef op zaterdag 11 juni 2011 @ 13:29:
Wat ik me voor kan stellen is dat je de file niet zelf hoeft te maken. Immers, jij hebt nu een lege file gemaakt met dus een grootte van 0. Verwijder de file eens en probeer het opnieuw :)

of bouw een check in dat als de lengte 0 is dat ie geen fread doet...immers zal hij toch geen tweets krijgen bij lengte 0 }:O
Inderdaad, heb het bestand verwijderd en de volgende code komt nu tevoorschijn:
Warning: file_put_contents(/home/xxxx.xx/domains/xxxx.xx/public_html/wp-content/themes/xx/twitter.json) [function.file-put-contents]: failed to open stream: Permission denied in /home/xxxx.xx/domains/xxx.xx/public_html/wp-content/themes/xx/testertw.php on line 86
Ik zie immers wel een tweet staan!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Script houdt inderdaad geen rekening met een lege cache file, en sowieso mist elke vorm van foutafhandeling. Daarnaast is de hele stijl van de code om te janken, dus je moet het eigenlijk vooral als proof of concept gebruiken en verder uitwerken.

De fout die je nu hebt betekent dat hij geen file mag aanmaken. Dus fix de dir rechten, of maak zelf de file aan en forceer de regels die hij uitvoert zonder de cache te lezen.

[Voor 19% gewijzigd door Voutloos op 11-06-2011 13:34]

{signature}


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-05 17:03

NMe

Quia Ego Sic Dico.

Rowin schreef op zaterdag 11 juni 2011 @ 13:31:
[...]

Ik zie immers wel een tweet staan!
Ja, omdat hij nu geen cachefile aan kan maken haalt 'ie het gewoon live op... Misschien moet je je eens verdiepen in wat het script doet in plaats van het blind over te nemen en te hopen dat het werkt?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Herko_ter_Horst
  • Registratie: November 2002
  • Niet online
Met andere woorden: snap wat het script doet en pas aan wat voor jou niet werkt. Als je het script niet snapt, kun je beter de maker om hulp vragen (of meer PHP-kennis opdoen).

"Any sufficiently advanced technology is indistinguishable from magic."


  • Big4SMK
  • Registratie: September 2001
  • Laatst online: 24-05 09:04
Dat lijken me de beste tips, ik gok echter dat je van je bootstrap probleem af bent als je je twitter.json file aanmaakt, rechten op 777 zet en als content twee blokhaken [] neerzet. Dan heb je effectief een lege lijst als json opgeslagen.

  • Rowinio
  • Registratie: Augustus 2009
  • Laatst online: 22-11-2022
Opgelost, heb de regels die naar cache verwijzen verwijderd, en het werkt! Alsnog bedankt heren (en dames?)!

[Voor 94% gewijzigd door Rowinio op 11-06-2011 13:43]


  • Big4SMK
  • Registratie: September 2001
  • Laatst online: 24-05 09:04
Dat is natuurlijk ook een oplossing. Verder zou je nog wel wat meer kunnen verwijderen als je toch geen caching wilt gebruiken. De hele read functie kan weg, immers...als het bestand niet bestaat zal die nooit aangeroepen worden.

Hou er wel rekening mee dat nu voor _elke_ hit op je pagina, een hit gemaakt wordt naar twitter. Als er weinig hits zijn boeit dat niet zo veel, je cache verliep toch na een uur, maar zeker als je site groter is/wordt is dat niet de meest aangename manier.

Ik zou me als ik jou was daarom alsnog wat verdiepen in php, en zorgen dat (een opgepoetste versie van) het script met caching gaat werken.

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Dat is geen oplossing. Caching van dit soort externe requests is eigenlijk gewoon verplicht, zeker gezien de uptime/api limits van Twitter. Die API limit kan je ook merken als je jouw server deelt met anderen. Als er dan iemand lekker geen caching gebruikt, is dat eigenlijk behoorlijk asociaal, omdat Twitter dan ook de calls van de anderen zal limiteren.

Hoe je het met cache aan de praat krijgt had ik al gezegd, en de methode van Big4SMK zal ook werken.

[Voor 30% gewijzigd door Voutloos op 11-06-2011 13:54]

{signature}


  • Rowinio
  • Registratie: Augustus 2009
  • Laatst online: 22-11-2022
Voutloos schreef op zaterdag 11 juni 2011 @ 13:53:
Dat is geen oplossing. Caching van dit soort externe requests is eigenlijk gewoon verplicht, zeker gezien de uptime/api limits van Twitter. Die API limit kan je ook merken als je jouw server deelt met anderen. Als er dan iemand lekker geen caching gebruikt, is dat eigenlijk behoorlijk asociaal, omdat Twitter dan ook de calls van de anderen zal limiteren.

Hoe je het met cache aan de praat krijgt had ik al gezegd, en de methode van Big4SMK zal ook werken.
De methode werkt niet, krijg ik alsnog een foutcode. Dat heb ik als eerste instantie geprobeerd.

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Dan ga je dus debuggen en foutafhandelingscode toevoegen.

https://oneerlijkewoz.nl
I have these thoughts / so often I ought / to replace that slot / with what I once bought / 'cause somebody stole my car radio / and now I just sit in silence


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Rowin schreef op zaterdag 11 juni 2011 @ 14:02:
[...]
De methode werkt niet, krijg ik alsnog een foutcode. Dat heb ik als eerste instantie geprobeerd.
Moet ik het echt voorkauwen?
Voutloos schreef op zaterdag 11 juni 2011 @ 13:33:
of maak zelf de file aan en forceer de regels die hij uitvoert zonder de cache te lezen.
Dus:
1. maak het bestaan aan, en maak het schrijfbaar.
2. zet tijdelijk een return false bovenin cache()
3. voer uit
4. haal de return false weg.

{signature}


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-05 17:03

NMe

Quia Ego Sic Dico.

Rowin schreef op zaterdag 11 juni 2011 @ 14:02:
[...]


De methode werkt niet, krijg ik alsnog een foutcode. Dat heb ik als eerste instantie geprobeerd.
Tsja, als je niet wil begrijpen wat het script doet en vervolgens wil debuggen wat er fout gaat, dan houdt het op. Maar dan hoef je dit topic ook niet meer te hebben, want blijkbaar interesseert het je niet dat je hier problemen mee gaat krijgen en wil je het ook niet zelf oplossen. ;)

Dan doen we dit topic maar dicht.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee