![]() |
Hej,
Går i tankarna att implementera ett litet hobbyprojekt. Jag har dock rätt begränsad budget, och sajten kommer troligtvis inte generera någon inkomst... därför lär jag köra på något billigt webbhotell. Huvudfunktionen kommer kretsa kring datainsamling från ca. 3-4 sajter 2 ggr dagligen (sidorna är på ca. 2 kB styck, inga större mängder alltså). Min fråga är hur ska jag schemalägga ett sådant script? En tanke som slog mig var att vid sidträffar kicka igång ett script ifall tidsvillkoret är uppfyllt... men om min sida inte kommer ha tillräckligt hög trafik så kommer denna idé inte att funka. Någon som har något förslag. Vidare undrar jag även vilka rekommendationer ni kan mig kring val av språk. Jag behärskar PHP, men känner mig sugen på att lära mig ASP.NET. Finns det några billiga webbhotell i prisklassen http://www.one.com som erbjuder ASP.NET stöd? Mvh //Mikael |
Du kan alltid slänga ihop nått litet program som requestar ett script på servern med jämna mellanrum och låta detta köras på en dator du alltid har igång. Alternativt har du bara en sida med refresh som du öppnar i din browser.
2 fina slaskhack, finns säkert nått bättre alternativ :) Vi har ett javaprogram för att hålla koll på utskick av sms och epost, detta just för att det är väldigt viktigt att det fungerar och uppdateringarna sker var 15e sek... tror jag det är :P |
Binero är ju relativt billigt och tillåter Cronjobs.
|
Kan rekommendera cronjobs tillsammans med något smidigt php-script.
|
Bästa är helt klart att ha någon form av daemon som automatiskt pollar oftare när sidan uppdateras ofta (kan lätt implementeras mha checksummor på valda block av sidan). Dessutom kan du då ha en kö för sidor som skall spindlas och trådar som gör det parallelt. Ett cronjobb fungerar bra för mer statiska hämtningar i mindre skala.
Det går såklart även att implementera cooloff-effekten med ett cronjobb också, fast det blir lite bulkigare. |
Har du ingen burk som mer eller mindre alltid är igång som du kan köra jobbet på som en liten konsolapplikation, en process i bakgrunden eller liknande istället för att köra det på webbservern? Ska informationen senare visas på en sida använder du exempelvis en webservice eller liknande enklare api för att ladda upp den spindlade och bearbetade informationen till den sidans databas eller liknande från jobbet som kör på den lokala burken.
I ditt fall handlar det inte om så mycket information men generellt tycker inte jag att man ska lasta webbservern med jobb som ska/kan köras i bakgrunden. Den typen av jobb ska rulla på en applikations eller job server. |
För datainsamling rekommenderar jag att du håller dig till PHP då du har både smidiga reguljära uttryck och API:er för XML-tolkning. Möjligen kan Ruby eller Perl vara värt att lära sig i sammanhanget men ASP.NET känns som ett steg tillbaka.
Citat:
|
Inte meningen att starta (ännu ett) php/ASP.NET-krig B) ...men reguljära uttryck och xml-tolkning finns väl för de flesta språk?
Kan bara inte se varför det skulle vara ett steg tillbaka för majkball att ta tillfället att lära sig ASP.NET genom detta hobbyprojekt om han är sugen på det och redan behärskar php. Hos exempelvis Binero kan du få windowskonto för ASP.NET. |
Citat:
Man kan alltså erbjuda cronjobsfunktioner utan att för den sakens skull ge användaren full SSH-access. Sen tycker jag absolut du kan köra det hela på webbhotellet och inte via egen server då det handlar om så lite information samt att det är ett hobbyprojekt. |
Citat:
Jag har byggt ett par specifika spindlar och det har fungerat utmärkt att bygga i .NET och C# :) Majball, om du funderar på att använda .NET kan jag rekommendera Html Agility Pack där du kan jobba med ett html dokument på samma sätt som ett xml dokument på ett grymt smidigt sätt och mer eller mindre använda en variant av xpath för att lokalisera element i ett html dokument. |
Citat:
Man kan använda samma klasser och metoder i sina fristående program även i PHP. Det är i princip ingen skillnad alls. Man använder till och med start- och sluttaggarna <?php och ?> på samma sätt. PHP har inte stöd för trådar, tyvärr, men klarar av att forka sig vilket gör att man kan implementera trådliknande funktionalitet (men med sämre prestanda och stabilitet). Jag menade mer att om man kan PHP så kanske det är lättare att göra det där än att man ska lära sig helt nya tankebanor. Och ska man väl lära sig nya tankebanor är, i mitt tycke, Perl vettigare att lära sig i sammanhanget då Perls hantering av reguljära uttryck är lika mycket inbyggd i språket som vanlig stränghantering. Perl klarar förstås trådning. Men för all del, ASP.NET kan säkert vara vettigt att lära sig ändå. |
Citat:
|
Har du lust att lära dig .NET så är en windows service ett förbannat smidigt sätt att lösa det på.
|
Tack för alla bra svar och tips.
Det lutar åt att jag skriver ihop ett litet Java-program som jag kör på en burk som jag vet är påslagen jämnt. Pollar all data, plockar ut det relevanta och uppdaterar sedan databasen på webbhotellet. Finns det något sätt man kan köra Java-program som en automatisk windows service? Burken jag tänker köra programet på används nämligen för kontors sysslor dagtid, och det vore störande för dom att ha ett fönster att ha koll på. Mikael |
En till liten sak...
Jag har ju aldrig tidigare sysslat med denna typ av programmering... finns det någon sida som grundligt tar upp saker man bör tänka på vid utveckling av spindlar? Annars lär jag ju säkert göra typiska fel och bara förlora massa tid. Mikael |
Någon som testat följande för att köra java program som en windows service?
http://wrapper.tanukisoftware.org/do...h/download.jsp |
Citat:
|
Hej,
Har kommit en bit på vägen. Snickrat ihop en spindel i Java som hämtar den data jag behöver. Nu måste jag dock uppdatera databaserna på webbhotellet, för tillfället kör jag med ett webbhotell som inte tillåter extern databas access (http://www.one.com). Ska dock flytta mig till binero.se som verkar bra... alternativt surftown.se om någon tycker det är bättre? Min tanke är att ha ett PHP-script på webbservern, som vid en POST tar emot all data, bygger upp en SQL fråga med vilken den senare uppdaterar databasen på webbhotellet. Några kommentarer kring detta upplägg mottages tacksamt? Är ju lite osäker på hur jag ska göra med verifieringen, endast godta uppdateringar från ett visst IP är ju ett sätt, annars? Räcker enbart lösenord som skickas med i POSTen... det är ju dock bara http, avlysningsbart så att säga, så hur mycket hjälper ett lösenord egentligen. Mikael |
En SOAP-baserad web service över https?
|
Om du crawlar sidorna för ofta lär det upptäckas och det kan ofta ta mycket kraft om du tar mycket information. Kan i värsta fall leda till att de blockar din ip.
|
Citat:
Har frågat sidorna jag hämtar informationen ifrån om tillåtelse, har inte fått något slutgiltigt svar då de vill inspektera resultatet. Men så länge jag inte använde informationen på ett sätt som kunde skada deras varumärke så var deras inställning positiv. // Mikael |
Alla tider är GMT +2. Klockan är nu 03:18. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson