De zoveelste storing bij Kiyoh de afgelopen maanden. Ik begin me nu toch een beetje te irriteren. Met enige regelmaat werkt dat ding niet, de website ligt er dan ook helemaal uit. Vandaag is het alweer geruime tijd mis.
Binnenkort toch maar eens kijken hoe we automatisch eens per dag een afbeelding kunnen uploaden ipv elke keer dat ding lagen.
Re: Kiyoh offline
2De KiyOh-widget is een webpagina in een inline frame. Je kunt dus één keer per dag met een cURL-request daarvan lokaal een kopie opslaan. Daarvoor heb je maar tien regeltjes code in PHP nodig.
Bijvoorbeeld: http://davidwalsh.name/curl-download
Bijvoorbeeld: http://davidwalsh.name/curl-download
Re: Kiyoh offline
3Het was eigenlijk meer een kwestie van gemakzucht om het zo te laten Ik ben inderdaad bekend met curl, vanavond (als Kiyoh het weer gaat doen) toch maar even iets in elkaar prutsen.
Re: Kiyoh offline
4Wat Ward nu precies heeft heb ik niet. Echter werkt de widget bij ons wel, maar doorklikken geeft inderdaad geen resultaat..
- Advertentie
Met Shopify maak je zelf je eigen webwinkel dankzij meer dan honderd thema’s en de complete appstore. Shopify sluit ook goed aan op dropshippers. De software is technisch volledig SEO-geoptimaliseerd en biedt alle sociale media-integraties. Meer info op Shopify.com.
Re: Kiyoh offline
5Probleem is dat je webpagina door een smiley wordt ontsiert als Chrome de content van KiyOh niet kan laden.
Ik heb eerder al eens aan een oplossing geknutseld om twee andere redenen: KiyOh plaatst trackingcookies (en dan moet je in de weer met cookiewaarschuwingen) en de KiyOh-server is bij vlagen sloom, waardoor je eigen webpagina's traag lijken te laden.
En dan hebben we ook nog een keer meegemaakt dat het netwerk waarin de KiyOh-server draait door malware was getroffen. Dát wil je je klanten ook niet aandoen: het risico dat ze via een "partner" een virus, keylogger, trojan of iets anders kwaadaardigs oplopen.
Ik heb eerder al eens aan een oplossing geknutseld om twee andere redenen: KiyOh plaatst trackingcookies (en dan moet je in de weer met cookiewaarschuwingen) en de KiyOh-server is bij vlagen sloom, waardoor je eigen webpagina's traag lijken te laden.
En dan hebben we ook nog een keer meegemaakt dat het netwerk waarin de KiyOh-server draait door malware was getroffen. Dát wil je je klanten ook niet aandoen: het risico dat ze via een "partner" een virus, keylogger, trojan of iets anders kwaadaardigs oplopen.
Re: Kiyoh offline
6Wij hadden ook een koppeling met Kiyoh om onze eigen klantbeoordelingen onafhankelijk te verzamelen. Dit hadden we ook gedaan met Curl, maar helaas ging Curl onderuit doordat de url niet beschikbaar is en curl wel wachte op resultaat.
Test dus wel even heel goed je Curl code en kijk wat er gebeurt als je een niet bestaande url toevoegd. Voeg bij voorkeur ook curl_setopt($curl, CURLOPT_CONNECTTIMEOUT ,3); toe waarbij 3 staat voor het aantal seconden dat je maximaal wilt wachten op de request... Mocht je dit met een cronjob doen en niet met caching op de pagina zelf, dan is dat trouwens nog mooier.
Succes!
Test dus wel even heel goed je Curl code en kijk wat er gebeurt als je een niet bestaande url toevoegd. Voeg bij voorkeur ook curl_setopt($curl, CURLOPT_CONNECTTIMEOUT ,3); toe waarbij 3 staat voor het aantal seconden dat je maximaal wilt wachten op de request... Mocht je dit met een cronjob doen en niet met caching op de pagina zelf, dan is dat trouwens nog mooier.
Succes!
WebwinkelKeur - Webshop Keurmerk + Klantbeoordelingen: Modern keurmerk, ouderwets vertrouwen. Vanaf €8,95 p/m
Re: Kiyoh offline
7Het hoeft niet eens met een cronjob. Ik hang zelf bepaalde onderhoudstaken bijvoorbeeld wel eens aan de logoff van de admin: werk gedaan, dan update de logoff de cache.
Verder is het geen rocket science. Je geeft de cachebestanden gewoon een datum mee:
20141204_kiyoh_cache.html (vandaag)
20141203_kiyoh_cache.html (gisteren)
20141202_kiyoh_cache.html (eergisteren)
enzovoort...
Daarna hoef je de cache alleen te updaten via cURL als er voor de huidige datum nog geen cachebestand is. Mislukt de cURL-request, dan is het resultaat van exec() false en kun je dus een ouder bestand uit de cache hengelen.
Verder is het geen rocket science. Je geeft de cachebestanden gewoon een datum mee:
20141204_kiyoh_cache.html (vandaag)
20141203_kiyoh_cache.html (gisteren)
20141202_kiyoh_cache.html (eergisteren)
enzovoort...
Daarna hoef je de cache alleen te updaten via cURL als er voor de huidige datum nog geen cachebestand is. Mislukt de cURL-request, dan is het resultaat van exec() false en kun je dus een ouder bestand uit de cache hengelen.
Re: Kiyoh offline
8De timeout lijkt me vrij logisch, het hele gedoe is er omdat Kiyoh om de haverklap offline is
Re: Kiyoh offline
9Zo, klaar. Script controleert of de Kiyoh website überhaupt iets doet en haalt dan de html bestanden binnen. Komt er geen response, dan blijven de oude bestanden staan.
Voor zo ver ik kan zien worden er in de html geen externe bestanden meer geladen.
Voor zo ver ik kan zien worden er in de html geen externe bestanden meer geladen.
Re: Kiyoh offline
10Wellicht kunnen jullie de code delen, scheelt weer voor anderen .
WebwinkelKeur - Webshop Keurmerk + Klantbeoordelingen: Modern keurmerk, ouderwets vertrouwen. Vanaf €8,95 p/m
Re: Kiyoh offline
11Ik heb inderdaad nu ook de widget lokaal staan. Die is gekoppeld aan een cronjob om te downloaden. Ik zou jullie wel adviseren om als je het via CURL ophaalt de locatie van de widget wel uit de webroot te halen en dan deze via een klein PHP bestandje server side in laadt. Dat is wel zo veilig. Verder natuurlijk geweldige tip
Re: Kiyoh offline
12Dit zou ik ook wel willen hebben.
De code delen zou super zijn natuurlijk.
Hoeven we alleen maar aan te passen naar onze eigen behoefte en klaar.
De code delen zou super zijn natuurlijk.
Hoeven we alleen maar aan te passen naar onze eigen behoefte en klaar.
Groeten,
Dennis van Orsouw
Stickerland / Signers
Stickerland.nl - Online stickers bestellen
Check ook mijn blog over stickers en reclame dingen
Dennis van Orsouw
Stickerland / Signers
Stickerland.nl - Online stickers bestellen
Check ook mijn blog over stickers en reclame dingen
Re: Kiyoh offline
13Hmm.. ik was Kiyoh aan het overwegen omdat ik nu bij webwinkelkeur mijn beoordelingen aan het opsparen ben. Misschien niet verkeerd om die twee banen te scheiden (winkelkeur / beoordelingen) mocht er ooit een keuze gemaakt worden om weg te gaan bij de desbetreffende winkelkeur
maar deze berichten maken me er ook niet echt warm voor haha
maar deze berichten maken me er ook niet echt warm voor haha
Re: Kiyoh offline
14Gelukkig zijn er meerdere aanbieders op de markt!Royk schreef:Hmm.. ik was Kiyoh aan het overwegen omdat ik nu bij webwinkelkeur mijn beoordelingen aan het opsparen ben. Misschien niet verkeerd om die twee banen te scheiden (winkelkeur / beoordelingen) mocht er ooit een keuze gemaakt worden om weg te gaan bij de desbetreffende winkelkeur
maar deze berichten maken me er ook niet echt warm voor haha
Wij twijfelen juist om over te stappen naar winkelkeur, omdat we bij een externe partij inmiddels behoorlijk wat beoordelingen hebben...
Google telt de reviews van de diverse platformen (van het afgelopen jaar) bij elkaar op, maar het is natuurlijk prettiger om 1 platform met veel reviews te hebben i.p.v. verschillende platforms met enkele reviews!
Re: Kiyoh offline
15Wij hebben ze beiden.
Kiyoh voor de beoordelingen en Webwinkelkeur voor het keurmerk.
Webwinkelkeur verzameld ook gewoon de beoordelingen van Kiyoh, dus daar zit geen dubbel werk in.
Kiyoh voor de beoordelingen en Webwinkelkeur voor het keurmerk.
Webwinkelkeur verzameld ook gewoon de beoordelingen van Kiyoh, dus daar zit geen dubbel werk in.
Groeten,
Dennis van Orsouw
Stickerland / Signers
Stickerland.nl - Online stickers bestellen
Check ook mijn blog over stickers en reclame dingen
Dennis van Orsouw
Stickerland / Signers
Stickerland.nl - Online stickers bestellen
Check ook mijn blog over stickers en reclame dingen
Re: Kiyoh offline
16Dennis1 schreef:Dit zou ik ook wel willen hebben.
De code delen zou super zijn natuurlijk.
Hoeven we alleen maar aan te passen naar onze eigen behoefte en klaar.
Ogh kan in een handje vol regels...
Als het voor widget is doe je
gaat er vanuit, dat dit script aangeroepen wordt vanuit web root en er ook een private naast de webroot bestaat.. dirname(dirname(__FILE__)) is hetzelfde als wat je in DOS deed als je dir .. typte. Controleert of download van Widget echt gelukt is en slaat het om veiligheidsredenen dan op als .txt bestand.
Dit is dus widget downloaden:
Vervolgens doe je dan om widget aan te roepen een bestandje in webroot zetten met (ik gebruik hier als naam kiyoh.php, ga ik in verder voorbeeld ook vanuit):<?
$html = file_get_contents(URL VAN WIDGET HIER TUSSEN AANHALINGSTEKENS NEER ZETTEN);
if($html) file_put_content(dirname(dirname(__FILE__)) . '/private/kiyoh.txt',$html);
?>
Dat is dus widget weergeven vanuit private mapje
<?
$html = file_get_contents(dirname(dirname(__FILE__)) . '/private/kiyoh.txt');
echo $html;
?>
Moet je uiteraard wel write permission op private ook zetten...
Widget zelf moet je dan de URL voor aanpassen naar de naam van het bestandje om de widget aan te roepen.
Krijg je bijvoorbeeld:
Dan moet je ook nog even een cronjob op de server instellen voor bijvoorbeeld elk uur die de widget dan download. Anders update je widget nooit, dat kan de bedoeling niet zijn.<iframe scrolling="no" src="/kiyoh.php" style="margin:0px 0px 0px 20px; width:180px; height:117px; overflow:hidden;" width="180" height="117" frameborder="0"></iframe>
Re: Kiyoh offline
17Dat ziet er niet al te lastig uit inderdaad.
De __FILE__ is dan het complete path of alleen maar vanuit de root van de site?
Hier ga ik straks zeker even mee stoeien!
Dank je.
De __FILE__ is dan het complete path of alleen maar vanuit de root van de site?
Hier ga ik straks zeker even mee stoeien!
Dank je.
Groeten,
Dennis van Orsouw
Stickerland / Signers
Stickerland.nl - Online stickers bestellen
Check ook mijn blog over stickers en reclame dingen
Dennis van Orsouw
Stickerland / Signers
Stickerland.nl - Online stickers bestellen
Check ook mijn blog over stickers en reclame dingen
Re: Kiyoh offline
18__FILE__ is een magische constante met het volledige pad, inclusief bestandsnaam, van het huidige PHP-script. Je hoeft daarop niet dirname() los te laten: gebruik gewoon __DIR__ voor de huidige directory.
Op een streng (goed) beveiligde webserver werkt file_get_contents() niet altijd met URL's, omdat je daarmee externe bestanden lokaal kunt uitvoeren. Werkt file_get_contents() inderdaad niet, gebruik dan cURL.
Op een streng (goed) beveiligde webserver werkt file_get_contents() niet altijd met URL's, omdat je daarmee externe bestanden lokaal kunt uitvoeren. Werkt file_get_contents() inderdaad niet, gebruik dan cURL.
Re: Kiyoh offline
19Plaats dit class-bestand ergens in je library:
Daarna kun je hiermee in bijvoorbeeld /kiyoh/index.php als volgt een widget uit de cache weergeven:
Het enige dat je hierna nog hoeft te doen, is in het inline frame de URL op /kiyoh/index.php of kortweg /kiyoh/ instellen.
De caching staat ingesteld op 1 update per dag, maar je kunt dit tweaken naar bijvoorbeeld 1 update per uur. Verder heb je voor deze oplossing geen cronjob nodig: de widget-class onderhoudt zijn eigen cache zelf.
Code: Selecteer alles
<?php
namespace KiyOh;
/**
* Cached KiyOh Widget
*
* @author Ward van der Put <Ward.van.der.Put@gmail.com>
* @license http://www.gnu.org/licenses/gpl.html GPLv3
* @version 1.0.0-beta.1
*/
class Widget
{
/**
* @type string KIYOH_WIDGET_URI
* Set this path to a company-specific URL.
*/
const KIYOH_WIDGET_URI = 'https://www.kiyoh.nl/widget.php?company=2768';
/**
* @type string $Document
*/
private $Document = '';
/**
* Constructor
*
* @param void
* @return void
*/
public function __construct()
{
$this->update();
$this->setDocument();
}
/**
* Convert the widget object to a string.
*
* @param void
* @return string
*/
public function __toString()
{
return $this->getDocument();
}
/**
* Display the KiyOh HTML page.
*
* @param void
* @return string
*/
public function getDocument()
{
return $this->Document;
}
/**
* Load the KiyOh HTML page.
*
* @param void
* @return void
*/
private function setDocument()
{
// First try to get todays cache file
$cache_file = 'kiyoh_cache_' . date('Ymd') . '.txt';
if (file_exists($cache_file)) {
$this->Document = file_get_contents($cache_file);
return;
}
// Next try to get older cache files
for ($days = -1; $days > -7; $days--) {
$cache_file = 'kiyoh_cache_' . date('Ymd', strtotime($days . ' day')) . '.txt';
if (file_exists($cache_file)) {
$this->Document = file_get_contents($cache_file);
return;
}
}
}
/**
* Update the KiyOh widget cache.
*
* @param void
*
* @return null|bool
* Returns null if the cache does not need to be updated. Returns
* false if the cURL connection fails and the cache could not be
* updated, otherwise true.
*/
private function update()
{
$cache_file = 'kiyoh_cache_' . date('Ymd') . '.txt';
if (file_exists($cache_file)) {
return null;
}
// Create a cURL request handler
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, self::KIYOH_WIDGET_URI);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Handle the cURL request
$response = curl_exec($ch);
if ($response === false) {
return false;
} else {
curl_close($ch);
unset($ch);
}
// Cache the response in a file cache
if (empty($response)) {
return false;
} else {
$fh = fopen($cache_file, 'w');
if ($fh === false) {
return false;
} elseif (fwrite($fh, $response) === false) {
return false;
} else {
fclose($fh);
return true;
}
}
}
}
Code: Selecteer alles
<?php
// Load the KiyOh widget class file:
// point the path to a location in your library
require 'Widget.php';
// Display the cached KiyOh widget
$kiyoh_widget = new \KiyOh\Widget();
echo $kiyoh_widget->getDocument();
De caching staat ingesteld op 1 update per dag, maar je kunt dit tweaken naar bijvoorbeeld 1 update per uur. Verder heb je voor deze oplossing geen cronjob nodig: de widget-class onderhoudt zijn eigen cache zelf.