Cronjob script - numbers changer (txt)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Vincent Wit

Vincent Wit

25/05/2020 20:07:49
Quote Anchor link
Hallo allemaal,

Ik heb een script gemaakt die een output in TXT geeft.
door de omvang van de website kan dit niet veranderd worden naar een database of dergelijke.

Dit txt bestandje bevat een nummer.
domein. /name.txt
Als je dit text bestandje opent staat er een nummer 2,3,4 of 5 in.
en ik wil dit nummer met bijv. een cronjob script om een specifiek tijdstip aanpassen.

Nummer 2 moet veranderd worden naar 4 en nummer 3 naar 2.
overzicht van nummers:
2 => 4
3 => 2
4 => 4
5 => 5

Hoe kan ik dit automatisch laten aanpassen steeds om een specifiek tijdsstip bijv. om 01:00
 
PHP hulp

PHP hulp

15/07/2020 03:17:45
 
- Ariën -
Beheerder

- Ariën -

25/05/2020 20:14:57
Quote Anchor link
met file() kan je het bestand per lijn openen.
En dan is het een kwestie van str_replace uitvoeren in een foreach.
 
Vincent Wit

Vincent Wit

25/05/2020 20:40:44
Quote Anchor link
Aller eerst bedankt voor je snelle antwoord.
Ik snap welke richting je opwil maar snap niet helemaal hoe ik dat nou in de praktijk moet doen...


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php file ('/files/naam.txt')


echo str_replace("4","2");
?>
Gewijzigd op 28/05/2020 15:15:55 door - Ariën -
 
- Ariën -
Beheerder

- Ariën -

25/05/2020 20:42:56
Quote Anchor link
file() creëert een array.
Die moet je dus doorlopen met foreach() { ..}
En per lijn kan je de nummers aanpassen.


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$lines
= file ('/files/naam.txt');
foreach($lines as $line) {
    // doe je actie per lijn.
}
?>
 
Rob Doemaarwat

Rob Doemaarwat

25/05/2020 21:12:01
Quote Anchor link
Volgens mij ga je vastlopen:
2 => 4
4 => 4
4 => 4
4 => 4
enz

Of zie ik het verkeerd?
 
- Ariën -
Beheerder

- Ariën -

25/05/2020 21:18:20
Quote Anchor link
Als je nou het nummer per lijn ophaalt uit je array? Je hebt niet voor niets een array waar de data per lijn in staat. ($line[0], $line[1] etc...)

Maar wat is de reden achter deze opmerkelijke opslagmethode?
Misschien valt hier het één en ander aan te verbeteren?
Gewijzigd op 25/05/2020 21:22:01 door - Ariën -
 
Vincent Wit

Vincent Wit

25/05/2020 21:22:31
Quote Anchor link
Rob Doemaarwat op 25/05/2020 21:12:01:
Volgens mij ga je vastlopen:
2 => 4
4 => 4
4 => 4
4 => 4
enz

Of zie ik het verkeerd?

Nouja als je op 4 komt hoeft hij idd niet veranderd te worden en mag hij dus blijven staan op 4.

Het is voor een spelletje STD kom je terecht op lvl 1. heb je betaald (ingame money) zet ik die gene over naar lvl 2. Dan moet ie dagelijks op een button klikken. die hem automatisch naar lvl 3 brengt. maar om die button de volgende dag ook weer te gebruiken moet ie daarvoor terug gebracht worden naar lvl 2. zodat je dat elke dag kan doen. en vergeet je een dag te klikken kom je automatisch naar lvl 4. en lvl 4 is game over. en moet je opnieuw betalen om opnieuw te kunnen beginnen. (en bij betaling doe ik het handmatig) maar de rest wil ik graag automatisch hebben.
 
- Ariën -
Beheerder

- Ariën -

25/05/2020 21:23:56
Quote Anchor link
Je moet uiteraard kijken wat er op die lijn staat, zoals ik hiervoor al zei.
Maar houd je die levels per gebruiker bij in een textbestand? Kan dat niet in een database?
 
Vincent Wit

Vincent Wit

25/05/2020 21:31:25
Quote Anchor link
Helaas niet omdat het op 2 websites draait en ik maar toegang heb tot 1 website. (mijn eigen server) maar waar het spel zelf draait kan ik niet bij dus heb ik een (misschien een beetje omslachtig maar het werkte tot dusver) script gemaakt om een extra spel element toe te voegen in het spel.
Gewijzigd op 28/05/2020 15:16:05 door - Ariën -
 
- Ariën -
Beheerder

- Ariën -

25/05/2020 21:43:32
Quote Anchor link
Ik zie nog steeds geen reden waarom je geen database kan gebruiken? Is het script encoded soms?
Jij hebt het toch in beheer? Dit klinkt als een ranzige workaround wat je wilt bereiken.

En sla je dit nou op per gebruiker?
 
Vincent Wit

Vincent Wit

25/05/2020 21:56:08
Quote Anchor link
- Ariën - op 25/05/2020 21:43:32:
Ik zie nog steeds geen reden waarom je geen database kan gebruiken? Is het script encoded soms?
Jij hebt het toch in beheer? Dit klinkt als een ranzige workaround wat je wilt bereiken.

En sla je dit nou op per gebruiker?

Jah het spel en site heb ik in beheer.
Maar de enige info die ik uit het spel kan halen is een Nickname.
verder kan ik alleen de HTML pagina aanpassen van het spel.

Theoretisch kan het wel in een database maar dan zou ik het reeds gemaakte script volledig moeten omgooien. en Helaas zijn mijn skills daarin zeer beperkt.

Het script die de automatische txt met nummers aanmaakt heeft de scripter van de game ooit een keer gemaakt voor mij zodat spelers op mijn site doormiddel van PHP en css de layout konden veranderen. en dat zelfde script gebruik ik nu voor een nieuw spel element wat ik heb bedacht.

alleen werkt het nog niet helemaal zoals ik wil dus.
Nu moet ik bijna alles handmatig gaan doen dagelijks. terwijl als ik dit script werkend kan krijgen ik maar 1 keer per week een enkele handeling hoef te doen.
 
- Ariën -
Beheerder

- Ariën -

25/05/2020 22:01:36
Quote Anchor link
Ik kan me niet indenken dat je het hele script overhoop moet gooien?
Een tabelletje extra, een paar queries en je bent er.

Maar aan de hand van dit moet je toch wel wat kunnen lijkt me?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$lines
= file ('/files/naam.txt');
foreach($lines as $line) {
    echo $line;
}

?>


Kijk wat er in $line staat, en doe een str_replace()

Ook hoop ik dat /files/ niet direct toegankelijk is. Het lijkt mij niet de bedoeling als iemand de databestanden zelf kan uitlezen? Overweeg eens sterk of ze die anderzijds ook buiten je webroot kan plaatsen.
 
Vincent Wit

Vincent Wit

26/05/2020 18:59:19
Quote Anchor link
dat heb ik nu gedaan, als ik de PHP pagina nu bezoek zie ik het volgende staan:

2Array ( [0] => 4 )

2 wordt dus vervangen door 4.
Maar het txt bestand blijft op 2 hangen.
en wordt dus ook niet aangepast door dit script.
ook niet nadat ik het heb laten runnen door cronjob
 
Thomas van den Heuvel

Thomas van den Heuvel

26/05/2020 19:04:37
Quote Anchor link
Je zult de wijzigingen ook op een of andere manier moeten wegschrijven? In wezen lees je een kopie uit - je bent niet rechtstreeks het origineel aan het bewerken als je dit soms dacht.
Gewijzigd op 26/05/2020 19:05:11 door Thomas van den Heuvel
 
Vincent Wit

Vincent Wit

26/05/2020 19:16:06
Quote Anchor link
oh oke, maar is dat wel mogelijk om dat te doen met een php script dan?
want dat is eigenlijk wat graag wou hebben/maken
Gewijzigd op 28/05/2020 15:16:18 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

26/05/2020 20:34:49
Quote Anchor link
file_put_contents() lijkt mij het makkelijkst.
 
Vincent Wit

Vincent Wit

27/05/2020 18:52:59
Quote Anchor link
Je bent geweldig Thomas.
Dit is precies wat ik zocht.
en het is gelukt met een beetje creativiteit.


Heel erg bedankt allen
Gewijzigd op 28/05/2020 15:16:27 door - Ariën -
 
Ivo P

Ivo P

28/05/2020 09:11:20
Quote Anchor link
vraagje: hoe haalt jouw script nu de waarde in die file op?

Dus los van het proces om dit aan te passen: stel er staat nu 3 in dat bestand.

Hoe komt die 3 in een variabele terecht?
mogelijke functies zijn file_get_contents(), include, file() etc.

Ik zat aan een andere oplossing te denken waarbij je mogelijk geen cronjob nodig hebt, maar dat is afhankelijk van de gebruikte ophaalmanier.
 
Vincent Wit

Vincent Wit

28/05/2020 15:13:32
Quote Anchor link
Waar zat je precies aan te denken dan?

De file wordt opgehaald met; file_get_contents(...

Quote:
Een hoop quotes weggeknipt. Integraal quoten van het eerstvoorgaande bericht is niet nodig. Onderaan staat een quick-reply. Alvast bedankt.
Gewijzigd op 28/05/2020 15:17:39 door - Ariën -
 
Ivo P

Ivo P

28/05/2020 15:40:06
Quote Anchor link
als je hem via een url ophaalt, dan kun je via .htaccess in plaats van een txt file een php-script uit laten voeren.

Bijvoorbeeld:
RewriteRule path/*.txt script.php [L]

en als simpel voorbeeld, kan script.php dan
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo 123;?>
bevatten

Voor wie of wat dan http://site.nl/path/naam.txt aansprak, lijkt het dan of naam.txt gewoon 123 bevatte.

En in plaats van alleen maar echo 123, kun je natuurlijk een hele structuur bedenken dat de output bijvoorbeeld 12.5 is als het voor 10 uur 's ochtends is,
je tussen 10 en 12 iets uit een database haalt of later op de dag de koers van de dollar.

Maar dat gaat alleen op, als je een url gebruikt.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.