Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

Connectie naar gehoste MySQL voor datainvoer?

Pagina: 1
Acties:
  • 559 views

Verwijderd

Topicstarter
Voor een heel specifieke club zendamateurs ( moounbouncers) bestaat al sinds de vroegste dagen van internet een berichtenboard waarop zendamatuers berichten uitwisselen op moment dat ze "in de lucht zijn". Omdat de beheerder van die site niet mee wil werken aan moderniseren van dit board, waar wel de hele community elkaar ontmoet, willen we een alternatief bouwen:

- een webpagina die de berichten beter weergeeft
- berichten opslaan in een database zodat ze ook nog later te doorzoeken zijn. Momenteel toont die site de 200 laatste berichten, daarnaa zijn ze weg!

Dat 1e punt is natuurlijk appeltje eitje, gewoon een website met MySQL, we zitten echter met het vullen van de database. Om dit te doen hebben we gedacht elke 30 sec de data op te halen van de "oude" site ( timer + httprequest) en op te slaan. Dit mag echter allemaal niks kosten ;-) en een dergelijke windowsservice kun je niet op een goedkoop hostingpakketje laten draaien. Is het mogelijk om:

- Een MySQL database bij een hostingprovider vanaf "thuis" te benaderen? Dan zouden we die windowsservice thuis kunnen laten draaien en data naar de database laten sturen.

Andere constructies of suggesties zijn ook erg welkom!

[ Voor 3% gewijzigd door Verwijderd op 05-08-2012 11:38 ]


  • DiedX
  • Registratie: December 2000
  • Laatst online: 22-11 10:40
Heel simpel: JA, technisch gezien kan dat. Hiervoor moet de beheerder MySQL wel openzetten van buitenaf.

Als hij nu al niet mee wil werken, dan zal hij het zeker niet willen doen.

DiedX supports the Roland™, Sound Blaster™ and Ad Lib™ sound cards


  • hellfighter87
  • Registratie: Mei 2008
  • Laatst online: 13:29
Dus als ik het goed heb wil je een aantal messages van de orginele site naar jou nieuwe site pushen en dat om een bepaalde tijd.

Wat ik dan zou doen is met cURL de website ophalen en daaruit de messages filterren, en deze daarna in jou database douwen?

Het aanroepen van de nieuwe pagina zal het probleem niet zijn, daarvoor kan je cronjobs gebruiken of een eigen link die je dan met de hand aanroept? of bij het inladen van jou pagina controleren wanneer het script voor het laatst gerunned heeft en dan dat script aanroepen.

Heeft die oude website niet iets van RSS ?

[ Voor 31% gewijzigd door hellfighter87 op 05-08-2012 11:51 ]


  • C0rnelis
  • Registratie: Juni 2010
  • Laatst online: 01-11 21:54
Verwijderd schreef op zondag 05 augustus 2012 @ 11:36:
- berichten opslaan in een database zodat ze ook nog later te doorzoeken zijn. Momenteel toont die site de 200 laatste berichten, daarnaa zijn ze weg!
Betekent dit dat de huidige website niet meer dan 200 berichten laat zien, en oudere berichten écht verwijderd of enkel niet terug te vinden zijn? Hoe vaak worden nieuwe berichten gepost? Ergo: heeft het wel zin om moeite te doen om de laatste 200 berichten over te kopiëren als het inderdaad om 'maar'* 200 berichten gaat?
Verwijderd schreef op zondag 05 augustus 2012 @ 11:36:
Dat 1e punt is natuurlijk appeltje eitje, gewoon een website met MySQL, we zitten echter met het vullen van de database. Om dit te doen hebben we gedacht elke 30 sec de data op te halen van de "oude" site ( timer + httprequest) en op te slaan. Dit mag echter allemaal niks kosten ;-) en een dergelijke windowsservice kun je niet op een goedkoop hostingpakketje laten draaien. Is het mogelijk om:
De vraag is hier voornamelijk, hoe de data op de huidige website wordt getoond: als dit 1 (lange?) pagina is, oftewel een enkele html pagina, dan snap ik niet waarom je berichten op zou willen halen om de 30 seconden. Meer informatie is handig, zoals bijvoorbeeld ook: gaat het puur om tekst zonder opmaak? Tekst met opmaak? Tekst met afbeeldingen? In het geval dat je de site niet gaat crawlen, maar rechtstreeks toegang hebt tot de database, dan lijkt het mij met weinig queries in 1 keer klaar kunt zijn, maar dan moet die toegang jou wel gegeven worden door de beheerder.

Waar denk je hier precies aan met windowsservice?

* Of het 'maar' 200 berichten zijn, hangt dus o.a. af hoe vaak berichten gepost worden.

[ Voor 8% gewijzigd door C0rnelis op 05-08-2012 16:53 ]


Verwijderd

Topicstarter
De site waar ik het vandaan haal ( en naartoe post) is:
http://www.chris.org/cgi-bin/jt65emeA

Zoals je ziet nogal oldschool. Ik lees die regels gewoon uit, trek ze uiteen en maak er per regel een record van. Mijn belangrijkste probleem is hetlaten draaien van die code 1x per 30 seconden. Niet zozeer qua code ( gewoon een timerjob die een httprequest doet) maar waar ik die code laat draaien. Om geen VPS oid te hoeven huren dacht ik dus aan een gewoon op eigen PC draaiend progje dat op afstand de MySQL database vult van een goedkoop hosting providertje.

Hert is dus meer een "architectuur"vraag dan een programmeer vraag. De kern is denk ik: krijg je toestemming om een MySQL database op afstand te benaderen?

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 20-11 19:54

krvabo

MATERIALISE!

Ik denk niet dat hier een databaseserver achterhangt. Zo'n simpel text based systeem zou al kunnen werken met een plain text-bestand. Als ik het zo zie is het ook voldoende als elk half uur, of desnoods elke minuut, de pagina wordt opgevraagd. Dit kan prima met cronjobs. Er zijn genoeg hosters die je een cronjob geven (via plesk / cpanel / etc).

Dus:
- Cronjob instellen die elke minuut (?) een php-script op jouw server aanroept
- Php-bestand vraagt met curl / file_get_contents / etc de url op (niet alle hosters staan externe sites toe bij file_get_contents)
- Kijk welke regel je nog niet hebt (op basis van tijd lijkt me)
- Voeg toe aan eigen database.

Als de beheerder niet mee wil werken aan het vernieuwen van het systeem lijkt het me heel sterk dat hij wel toestaat dat je het scraped overigens.

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


  • Jogai
  • Registratie: Juni 2004
  • Laatst online: 21-11 09:23
Bij xeround kun je databases afnemen die op afstand benaderbaar zijn.

De suggesties van krvabo zijn ook wel waardevol voor je waarschijnlijk, dan ben je helemaal niet meer afhankelijk van een machine die thuis draait.

Wat je ook kan doen is een wrapper bouwen die je met een ajax call kan aanroepen. Dan kun je wel met een service werken, maar dan handelt de applicatie de invoer af. Lijkt me nog veiliger ook.

edit: je zou het ook nog in fusion tables kunnen schieten. Die heeft libraries genoeg om mee te werken.

[ Voor 21% gewijzigd door Jogai op 06-08-2012 09:29 . Reden: google fusion tables toegevoegd ]

Klik hier om op linkedIn lid te worden van de Freelance Tweakers groep.


  • Damic
  • Registratie: September 2003
  • Laatst online: 21:21

Damic

Tijd voor Jasmijn thee

Als je deze ( http://www.chris.org/cgi-bin/review-jt65emeA ) link scraped, dan heb je nog minder info op te halen. Zoeken op <pre> en dan de eerst volgende lijn parsen, dit doen tot je de laatste tijd tegen komt dat je hebt geparsed.

Niet zo echt moeilijk, het volgende werkt gewoon:
PHP:
1
2
3
4
5
6
7
<?php
// This script wil scrape the 200 lines of the moonbounce site
$PageToParse = file_get_contents('http://www.chris.org/cgi-bin/review-jt65emeA');

echo "<!-- MoonBounce Page Parser //-->\n";
print_r ($PageToParse);
?>


Nevermind had wat tijd: *knip* alles mooi in een tabel

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
$PageToParse = explode("\n",file_get_contents('http://www.chris.org/cgi-bin/review-jt65emeA'));
echo "<!-- MoonBounce Page Parser //-->\n";
$sData = array('date'=>'','time'=>'','content'=>'','name'=>'','mail'=>'','ip'=>'','uname'=>'','xdata');

echo '<table>
    <tr>
        <th>Date</th>
        <th>Time</th>
        <th>Name</th>
        <th>Mail</th>
        <th>uName</th>
        <th>Text</th>
        <th>ip</th>
        <th>?</th>
    </tr>';
for($i=8;$i<=207;$i++)
{
    $lineSplit = explode(' ====== ',$PageToParse[$i]);
    //front
    $tmpdata = explode(' ', $lineSplit[0],3);
    $sData['date'] = $tmpdata[0];
    $sData['time'] = $tmpdata[1];
    $sData['content'] = $tmpdata[2];

//!!!!before we continu check date and time in db if its not the same go and save it else quite the script!!!!
    //rear
    $lineSplit[1] = str_replace(array('{','}'),'',$lineSplit[1]);
    $tmpdata = explode(' ', $lineSplit[1]);
    if(count($tmpdata)==6)
    {
        $tmpdata[0]=$tmpdata[0].' '.$tmpdata[1];
        for($j=1;$j<5;$j++)
        {
            $tmpdata[$j]=$tmpdata[$j+1];
        }
    }
    $sData['mail'] = $tmpdata[0];
    $sData['name'] = $tmpdata[1];
    $sData['uname'] = $tmpdata[3];
    $sData['xdata'] = $tmpdata[2];
    $sData['ip'] = $tmpdata[4];

echo "\t<tr>\n\t\t<td>$sData[date]</td>\n\t\t<td>$sData[time]</td>\n\t\t<td>$sData[name]</td>\n\t\t<td>$sData[mail]</td>\n\t\t<td>$sData[uname]</td>\n\t\t<td>$sData[content]</td>\n\t\t<td>$sData[ip]</td>\n\t\t<td>$sData[xdata]</td>\n\t</tr>\n";
}
echo '</table>';
?>

[ Voor 95% gewijzigd door MueR op 07-08-2012 10:44 ]

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag


Verwijderd

Topicstarter
Thanx voor alle hulp, hiermee moeten we eruit komen!

Verwijderd

Topicstarter
Ik neig naar het maken van een simpele WCF service die een record insert. Kun je dergelijke WCF services wel gewoon neerzetten bij zo'n provider?

  • brambo123
  • Registratie: December 2006
  • Laatst online: 21:37
Nee, dat gaat niet, of je moet vps nemen met windows, maar dat is behoorlijk duur.
Je kan echter gewoon met PHP scriptje maken.
Is alleen wel handig als je hosting provider hebt waar je cron jobs kan instellen.
Heb jij zelf enige ervaring met PHP?
Ander wil ik je wel helpen, maak ik simpele versie voor je.

  • BramV
  • Registratie: Augustus 2007
  • Laatst online: 21-11 18:06
ik heb ooit bij Webstekker een Web Schedules gedraaid. Iedere kwartier werd er een Delphi executable uitgevoerd. In dit geval ging het om de weervoorspelling van Google, een xlm bestand wat ik omzette naar een javascript... Dus VPS is niet altijd nodig ... Aangezien er geen snelheid nodig is kun je het toch ook lokaal op je eigen computer draaien en dan een connectie maken naar de MySql, dus op afstand, dat moet bij de meeste providers geen probleem zijn..?

  • brambo123
  • Registratie: December 2006
  • Laatst online: 21:37
@BramV
Idd, vps is niet nodig, maar wel als je een WCF wilt draaiten denk ik.
MySQL verbinding maken is echter ook niet altijd makkelijk van afstand, dan moet je ook weer de juiste webhoster hebben waar dat is toegestaan.
Maar waarom zo moeilijk doen met externe toevoegen van data als het ook met een simpel php scriptje kan.

  • BramV
  • Registratie: Augustus 2007
  • Laatst online: 21-11 18:06
@Brambo123: het mag niks kosten :-) dus dan draai je thuis iets lokaals... anders kom je altijd bij een hoster terecht... of iemand die het beschikbaar maakt. En dat is ook weer een afhankelijkheid dat de basis is van het hele probleem. De oplossing is niet zo moeilijk, de vraag is waar/hoe je de service gaat draaien. Nu vraag ik me eigenlijk af waar komt de Mysql vandaan?

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 22:55

MueR

Admin Devschuur® & Discord

is niet lief

Allereerst heeft dit niets met Webdesign, Markup & Clientside Scripting van doen. Dit zou beter passen in Programming. Ik ga dit topic dus verplaatsen.

Maar ik ga het ook sluiten. Het jatten van content van een andere site mag niet zonder schriftelijke toestemming van de beheerder, dus ik zou eerst eens zorgen dat je die hebt (zie Het algemeen beleid #verbodencopyright). Daarnaast zie ik erg weinig code in dit topic. Ik heb van TS nog geen enkel uitgewerkt idee gezien.

Verder ga je geen enkele hoster vinden met een gram verstand in z'n kop die mysql naar buiten open gaat zetten.

[ Voor 8% gewijzigd door MueR op 07-08-2012 10:39 ]

Anyone who gets in between me and my morning coffee should be insecure.

Pagina: 1

Dit topic is gesloten.