Aufruf im Minutentakt



  • es heißt auch nicht sleep() sonder Sleep(), großgeschrieben.....



  • dddsf schrieb:

    es heißt auch nicht sleep() sonder Sleep(), großgeschrieben.....

    Vielleicht unter windows...unter linux kannst du es auch klein schreiben...



  • er hatte erwähnt das er mit windows arbeitet und hat die fehlermeldung bekommen das sleep() nicht bekannt ist.



  • ah gut zu wissen das man in windows so eingeschrengt ist...ein grund mehr auf linux zu proggen...



  • Hi!

    Wieso eingeschränkt? Ich sehe keinen Sinn darin eine Funktion 2x zu definieren, nur weil es ein paar Programmierer gibt die nicht zwischen Groß- und Kleinschreibung unterscheiden können oder zu faul sind mal in die Header zu gucken. In der Header kann man dann ja case-insensitiv nach sleep suchen, dann sieht man wie die Funktion geschrieben wird.

    Code-Hacker



  • Code-Hacker schrieb:

    Hi!

    Wieso eingeschränkt? Ich sehe keinen Sinn darin eine Funktion 2x zu definieren, nur weil es ein paar Programmierer gibt die nicht zwischen Groß- und Kleinschreibung unterscheiden können oder zu faul sind mal in die Header zu gucken. In der Header kann man dann ja case-insensitiv nach sleep suchen, dann sieht man wie die Funktion geschrieben wird.

    Code-Hacker

    Hallo Ich hab kein windows...unter 'man sleep' findest du unter linux die sleep funktion kleingeschrieben...ich hab den quellcode unter linux fehlerfrei compilieren können...wie soll ich da wissen das es unter windows probleme gibt?



  • @Cico: Du nervst. Enweder du postest Müll-Sourcecode oder absolut sinnfreie Beiträge.



  • Hi!

    Ich weiß nicht...einfach mal den Thread lesen wäre eine Idee:

    koller schrieb:

    #include <windows.h> // Läuft halt nur unter windows
    
    int main()
    {
        Sleep(30000); // Schlafe 30 Sekunden
        return(0);
    }
    

    Code-Hacker



  • interpreter schrieb:

    @Cico: Du nervst. Enweder du postest Müll-Sourcecode oder absolut sinnfreie Beiträge.

    Es zwingt dich niemand sie zu lesen...



  • TheRaven schrieb:

    Ich programmiere es unter windows brauche es aber für meinen webserver der unter debian läuft. CRonjobs möchte ich nicht verwenden. Muss ein eingener Prozess sein .

    Kannst Du darauf näher eingehen?
    Cronjobs wären dafür wirklich perfekt!



  • Cico schrieb:

    interpreter schrieb:

    @Cico: Du nervst. Enweder du postest Müll-Sourcecode oder absolut sinnfreie Beiträge.

    Es zwingt dich niemand sie zu lesen...

    Verzeih, leider kann mein Gehirn schwachsinnigen Text nur erkennen, nachdem ich ihn gelesen habe.



  • interpreter schrieb:

    Cico schrieb:

    interpreter schrieb:

    @Cico: Du nervst. Enweder du postest Müll-Sourcecode oder absolut sinnfreie Beiträge.

    Es zwingt dich niemand sie zu lesen...

    Verzeih, leider kann mein Gehirn schwachsinnigen Text nur erkennen, nachdem ich ihn gelesen habe.

    Du brauchst dich für dein besch...eidenes Gehirn nicht zu entschuldigen 😃



  • Anstatt euch hier zu streiten könntet ihr mir lieber einen Quellcode zeigen :p :p

    Dev c++ wird benutzt

    Raven



  • naja, ich wuerd mich ned so hart ausdruecken ... aber inhaltlich gesehen hat interpreter ein klein wenig recht ....

    Wenn ich die code-beispiele meinem system admin zeige, wuerde der in ohnmacht fallen ... und neben dem Project manager zum liegen kommen 🙂

    1. System-technisch .... was spricht gegen cronjob ? Wie schon vorher gesagt, der ist fuer solche sachen da !!! (ne art cronjob gibts sogar unter windoof)

    2. wenn man zu nem standard compatibel bleiben will, sollt man die standards kennen, also sich vorm programmieren damit auseinader setzen ... . sleep ist ned wirklich standard ... egal ob gross oder klein geschrieben ...

    3. die sauberste loesung ist immer noch multithreading ... leider gibts dafuer keinen einheitlichen standard. Entweder man geht auf die systeme ein ... mittles compilerdirektiven ... und lernt dann so nenbenbei das multithreading unter beiden systemen kennen ... oder man nimmt ne crossplattform biblo, die mt support mitsichbringt (QT boost), das veranfacht das leben enorm .
    Das ganze thema ist fuer einsteiger ned wirklich geeignet, und fuer mal schnell nen "Hack" ... eigentlich schon zu kritisch. Schliesslich spielen da Ressourcenprobs, sicherheitsaspecte rein ... das prog soll ja auch ne weile laufen.

    5. Ne Loesung wo ich das programm auf ner console (und blockieren) starten muss wuerd ich eh ablehnen, womoeglich noch in die autoexec haengen ... fuer solche sachen sollte es unter windows schon nen dienst, und unter Unix nen daemon sein ... noch mehr BS spezifischer krams ...

    4. "system" ist poese, "system" ist poese, "system" ist poese !!!

    Ciao ...



  • CronJobs sprechen nicht dagegen , aber ich möchte das alle 10 sekunden eine php datei aufgerufen wird und das ist mit cronjobs nicht machbar.
    Um nochgenauer zu sein : das php script liefert daten von einem game server wie punkte etc. diese werten ausgewertet und in eine sql db geschrieben jeder gamer kann sich dann später auf der homepage angucken wie gut er ist etc.

    ps : dev c++ wird benutzt



  • @RHBaum du hast ja recht mit system ein prozess zu starten ist nicht die feine art in c/c++ aber die schnellste...kennst du vielleicht ne alternative?vielleicht ist fork()eine???



  • du sollst auch keine php datei aufrufen ... sondern nen richtiges binary (vorzugsweisse keinen interpreter, dem das script einfach mitgiebst 🙂 )
    schreib dein binary in c / c++ und lass das vom cron ausfuehren ... das waer mein erster schritt ... damit hasst das ganze thema mit threading und timing schon mal in den hintergrund geschickt ....

    Wobei ich zugeben muss, das ich bei 10 sec timern auch kein so gutes gefuehl mitm cronjob haette .... die perfekte loesung dafuer waer eben nen daemon, der permanent im speicher laeuft und das timing usw uebernimmt.

    Aber das wuerd ich um himmels willen ned plattform unabhaengig programmieren wollen ....
    Mein Tipp ... schreib dein erstes prog in standard c++ (plattformunabhaengig) so , das es beim auruf nur einmal deine Punkte in die Sqldatenbank schreibt. schreib schoen modular, also mit klassen. Noch besser mach ne bibo fuer das, und bind die bibo erst mal an ne einfache exe. Wenn das laeuft, convertier es auf linux. wenn es da laueft, lass es erst mal mitm cronjob laufen.

    In der zwischenzeit beschaeftigst dich mit Unix Systemprogrammierung ... hauptsaechlichst mit prozessen (fork, brauchst fuer daemon) und threads (brauchst fuern timer) .... bau dir nen geruest zusammen, was dir aller 10 sec irgend ne c-funktion aufruft ... und das als daemon (also was auf die console schreiben iss nich ... aber log file gaenge 🙂 ) ... dann brauchst zum schluss "nur noch " deine eigene bibo da einbinden ...

    Ob sich das dafuer lohnt , weiss ich ned ... aber frueher oder spaeter wirst mit anderen loesungen auf andere probleme stossen ... die weitaus schlimmer sind als der cronjob ...

    ciao ...



  • @cico
    "system" is auch nicht standard 🙂 Aber das ist ned das problem ... egal obs die feine art ist oder ned, du bekommst proebleme wenn es bei sowas nutzt, egal ob das system in c++, visual basic, oder java oder was auch immer aufrufst.

    Alternativen ? ... keine wirkliche, leider.
    ok, linux kannst eine der fork varianten nehmen, das entscharft den sicherheitsaspect. Unter windows kannst das System uber den API-Call ersetzen ... performanter ... und eben auch sicherer ...
    Klar, plattformunabhaengigkeit geht da ned wirklich.

    Sich auf nen externes binary zu verlassen und das zu "pollen" ist eh die schlechteste aller alternativen.

    In dem konkreten fall ... das php abschiessen.

    Die daten vom server bekommst auch mit c/c++ , und das sauberer ...
    daten in ne sql-tabelle zu pressen, auch ... und dabei benutzt dann eben sichere schnittstellen (die von dem game server, und die sql sockets) die auch noch performanter sind, ohne jedesmal nen externen prozess dafuer aufzumachen.
    (fuer die max Loesung)

    Bei der abgespekten version (cronjob) laesst die abreit nem spezialisten halt tun ... ist allemal sicherer als den system call selber zu machen ...

    Ciao ...



  • Cico schrieb:

    @RHBaum du hast ja recht mit system ein prozess zu starten ist nicht die feine art in c/c++ aber die schnellste...

    Einfachste, aber gewiss nicht die Schnellste.

    kennst du vielleicht ne alternative?vielleicht ist fork()eine???

    fork() und danach execXXX um den Code des auszuführenden Programms in das Speicherabbild des Kindprozesses zu kopieren.



  • fork() und danach execXXX

    und damit baut er genau den "system" -Aufruf nach 🙂
    Bisserl mehr sollt er schon machen ... besonders berechtigungen korrekt setzen und S-Bit checken, den system-call string und dessen parameter validieren etc 🙂

    btw fork + execXXX ist sicher genau so schnell wie system ... weil es am ende genau das selbe tut ?

    Ciao ...


Anmelden zum Antworten