Goedendag,
Ik ben een programmeer leek maar heb een probleem met een scriptje waarvan ik hoop dat iemand me kan helpen.
Ik maak gebruik van een script dat inlogd op een bepaalde website en daar een bestand download en op mijn eigen server onder bepaalde naam weer opslaat.
Nu gaat dat goed zolang het een directe verwijzing is naar het bestand.

Maar nu moet ik vrijwel hetzelfde doen maar kan ik niet rechtstreeks naar het bestand verwijzen omdat deze dynamisch opgebouwd wordt en de naam dagelijks veranderd (zit een maand en datum in bestandsnaam.
Wel heb ik een vaste link die ervoor zorgt dat laatste bestand automatisch start met downloaden.
Dat werkt echter zolang ik die gewoon ind e browser open en het bestand dan naar mijn computer download.
Deze link ziet er als volgt uit:

http://domeinnaam.nl/wp-admin/admin.php?page=pmxe-admin-manage&id=1&action=get_file&_wpnonce=9caaead0e3

als ik het script met deze url als locatie van file aanroep via cron-job krijg ik de volgende foutmelding:

/bin/sh: -c: line 0: unexpected EOF while looking for matching `"'
/bin/sh: -c: line 1: syntax error: unexpected end of file


het script is als volgt:


<?php


$remotefile = 'http://domeinnaam.nl/wp-admin/admin.php?page=pmxe-admin-manage&id=1&action=get_file&_wpnonce=9caaead0e3';
$localfile = '/home/wns/domains/domeinnaam.nl/public_html/feeds/bestandsnaam-test.csv'; // <-- Change this to an existing directory where to store the xml file

// This file is needed to save the session cookie
$scalacookie ='tmp/naamcookie.txt'; // <-- Change this to an existing directory to store a temporary file containing the cookie (cookie jar)

$loginUrl = "http://domeinnaam.nl/wp-admin";

// User name and password to login the website, a separate account can be create for this.
$user = 'gebruikersnaam'; // <-- put your login here
$pw = 'wachtwoord'; // <-- put your password here

//init curl
$ch = curl_init();

//Set the URL to work with
curl_setopt($ch, CURLOPT_URL, $loginUrl);

// ENABLE HTTP POST
curl_setopt($ch, CURLOPT_POST, 1);

//Set the post parameters
curl_setopt($ch, CURLOPT_POSTFIELDS, 'login_email='.$user.'&login_password='.$pw);

//Handle cookies for the login
curl_setopt($ch, CURLOPT_COOKIEJAR, $naamcookie);

//Setting CURLOPT_RETURNTRANSFER variable to 1 will force cURL
//not to print out the results of its query.
//Instead, it will return the results as a string return value
//from curl_exec() instead of the usual true/false.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//execute the request (the login)
$store = curl_exec($ch);

//the login is now done and you can continue to get the
//protected content.
//set the URL to the protected file
curl_setopt($ch, CURLOPT_URL, $remotefile);

//execute the request
$content = curl_exec($ch);

// close session
curl_close($ch);

//save the data to disk
file_put_contents($localfile, $content);

?>


Iemand enig idee hoe ik dat kan oplossen zodat hij ook met die aanroep van te downloaden bestand werkt?
Groet

Daniel
Hoe ziet je cronjob-commando er uit?
Hoe ziet het commando er uit in de cronjob?






Te laat, Aar was me reeds voor.
Oeps.....

/usr/bin/wget -O /dev/null "http://domeinnaam.nl/feeds/feed-download.php

Had laatste " dus per ongeluk verwijderd....

heb nu /usr/bin/wget -O /dev/null "http://desexwinkel.nl/feeds/feed-download.php" en nu wordt bestand bestandsnaam-test.csv wel aangemaakt.

Maar dan een nieuw probleem: bestand is leeg terwijl bronbestand welke hij moet downloaden en als bestandsnaam-test.csv moet opslaan 71MB groot is.

[size=xsmall]Toevoeging op 01/09/2015 13:43:54:[/size]

Overigens ben ik vrij omslachtig bezig. bronbestand staat namelijk ook op mijn eigen server.
Maar dit bronbestand wordt via een cronjob automatisch dagelijks gegenereerd door een script wat ik gekocht heb.
maar dat script kan het gedownloade bestand (een uittreksel van bepaalde info uit mijn database) dus niet onder een vaste naam opslaan maar enkel dus met een maand en datum toevoeging.

En ik heb het bestand nodig op een vaste locatie met een vaste naam zodat een externe partij die dagelijks weer kan ophalen. vandaar dus op deze omslachtige manier.
Als het dagelijks aangemaakt, zit er dus een patroon in als:

8-31.csv (gisteren)
9-1.csv (vandaag)
etc?

Dan kan je dat prima doen.
Je kan ook met glob() kijken welke bestanden er zijn en met filemtime() kijken welke het nieuwste is...
de file komt te staan in de map ....../uploads/2015/09 en volgende maand in de map uploads/2015/10 enz.
en de naam van het bestand is als volgt: bestands-naam September 01 09_14.csv

en stuk vanaf September veranderd dus dagelijks/maandelijks.
In diezelfde directory komen nog vele honderden andere bestanden te staan, namelijk alle productfoto's van nieuwe producten.
Kunnen dus honderden/duizenden files in die map komen te staan. dus eenvoudigweg de laatste nemen is ook niet de oplossing.

Maar iemand aan de hand van script een idee waarom er een leeg bestand aangemaakt wordt?
Nu weet ik dat je de upload-map in Wordpress ook kan wijzigen...
dat zal geen verschil maken aangezien dan zowel de foto's voor nieuwe producten als de gegenereerde exports dus naar die nieuwe map gaan
Maar dan weet je welk waar het bestand staat.
En je weet hoe het bestand heet.
Want jij laat dat bestand aanmaken.

Dan is het toch gewoon copy()?
Daniel Feenstra op 01/09/2015 13:41:01

maar dat script kan het gedownloade bestand (een uittreksel van bepaalde info uit mijn database) dus niet onder een vaste naam opslaan

Waarom niet? Script kun je toch aanpassen om dat te realiseren?!
Uiteraard kan ik het bestand elke dag handmatig kopiëren en naar een andere map verplaatsen en de naam veranderen. maar wil dat dat automatisch gebeurd.

En ja je kan het bestand aanpassen zodat het ergens anders opgeslagen wordt maar die aanpassingen gaan dan steeds verloren als het script weer geupdate wordt.
Ik moet dus echt met een script zoals bovenstaand het bestand van ene naar andere locatie copieeren.

Maar bovenstaande script werkt dus prima als de url van bronbestand echt naar bestand verwijst en eindigd op .csv of .xml maar werkt nu niet doordat de url verwijst naar een plek waarmee bestand aangemaakt wordt. Dat zou toch op te lossen moeten zijn?

Reageren