New cornjob

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • You add a new cron in database. He is only executed when there is player activity or server crontab.

      You can follow cron examples on includes/class/cronjob
    • und könntest du ein Tutorial schreiben, wie man es hinzufügt, weil ich in diesen Dingen grün bin und so etwas haben möchte, wenn du meine Datenbank brauchst, kann ich einen Download-Link im Voraus senden, danke
    • beispiel:
      erstelle diese datei
      includes\classes\cronjob\DMCronjob.class.php

      PHP Source Code

      1. class DMCronjob
      2. {
      3. public function run()
      4. {
      5. $db = Database::get();
      6. $db->update('update %%USERS%% set darkmatter = darkmatter + 500');//gibt allen usern 500 dm
      7. }
      8. }
      jetzt geh ins adminpanel -> cronjobs -> neuen cronjob erstellen
      dort wähls du aus wann der cronjob laufen soll, das intervall

      das wars, jetzt müsste er laufen
    • danke für hilfe aber irgendwas muss ich falsch machen weil ich eine datei mit dem code, den du mir geschrieben hast, als dmcornjob.class.php gespeichert habe ich habe meinen server im admin panel tab cornjob eingetragen wann es gemacht werden soll und leider nicht funktioniert vielleicht könntest du schritt für schritt was schreiben Ich kann etwas falsch machen Ich habe einen Cache angelegt und es funktioniert nicht, wenn Sie schreiben könnten, was ich falsch machen kann, oder wenn Sie den Server betreten und ihn einrichten, wäre ich dankbar
    • in der datenbank kann es sein dass die zeit der nächsten ausfühung(nextTime) nicht aktualisiert wurde, diese kannst du in der datenbank unter uni1_cronjobs manuel aktualisieren(nimm einfach die zeit vom 2ten(statistik) cron)
      ansonsten guck mal ob du was in der includes/error.log finden kannst
    • okay, löscht alles aus error.log. Ich werde aus der Datei hinzufügen, in der Dark Metter festgelegt ist, wie schnell die Ausführungszeit den Cache löscht und erneut prüft. Schalte alle anderen Hühneraugen aus und ich bitte dich, mich wegen der Zwietracht zu kontaktieren, wenn du leichter zu kommunizieren hast
    • PHP Source Code: Cornjob.class.php

      1. <?php
      2. /**
      3. * 2Moons
      4. * by Jan-Otto Kröpke 2009-2016
      5. *
      6. * For the full copyright and license information, please view the LICENSE
      7. *
      8. * @package 2Moons
      9. * @author Jan-Otto Kröpke <slaver7@gmail.com>
      10. * @copyright 2009 Lucky
      11. * @copyright 2016 Jan-Otto Kröpke <slaver7@gmail.com>
      12. * @licence MIT
      13. * @version 1.8.0
      14. * @link https://github.com/jkroepke/2Moons
      15. */
      16. class Cronjob
      17. {
      18. function __construct()
      19. {
      20. }
      21. static function execute($cronjobID)
      22. {
      23. $lockToken = md5(TIMESTAMP);
      24. $db = Database::get();
      25. $sql = 'SELECT class FROM %%CRONJOBS%% WHERE isActive = :isActive AND cronjobID = :cronjobId AND `lock` IS NULL;';
      26. $cronjobClassName = $db->selectSingle($sql, array(
      27. ':isActive' => 1,
      28. ':cronjobId' => $cronjobID
      29. ), 'class');
      30. if(empty($cronjobClassName))
      31. {
      32. throw new Exception(sprintf("Unknown cronjob %s or cronjob is deactive!", $cronjobID));
      33. }
      34. $sql = 'UPDATE %%CRONJOBS%% SET `lock` = :lock WHERE cronjobID = :cronjobId;';
      35. $db->update($sql, array(
      36. ':lock' => $lockToken,
      37. ':cronjobId' => $cronjobID
      38. ));
      39. $cronjobPath = 'includes/classes/cronjob/'.$cronjobClassName.'.class.php';
      40. // die hard, if file not exists.
      41. require_once($cronjobPath);
      42. /** @var $cronjobObj CronjobTask */
      43. $cronjobObj = new $cronjobClassName;
      44. $cronjobObj->run();
      45. self::reCalculateCronjobs($cronjobID);
      46. $sql = 'UPDATE %%CRONJOBS%% SET `lock` = NULL WHERE cronjobID = :cronjobId;';
      47. $db->update($sql, array(
      48. ':cronjobId' => $cronjobID
      49. ));
      50. $sql = 'INSERT INTO %%CRONJOBS_LOG%% SET `cronjobId` = :cronjobId,
      51. `executionTime` = :executionTime, `lockToken` = :lockToken';
      52. $db->insert($sql, array(
      53. ':cronjobId' => $cronjobID,
      54. ':executionTime' => Database::formatDate(TIMESTAMP),
      55. ':lockToken' => $lockToken
      56. ));
      57. }
      58. static function getNeedTodoExecutedJobs()
      59. {
      60. $sql = 'SELECT cronjobID
      61. FROM %%CRONJOBS%%
      62. WHERE isActive = :isActive AND nextTime < :time AND `lock` IS NULL;';
      63. $cronjobResult = Database::get()->select($sql, array(
      64. ':isActive' => 1,
      65. ':time' => TIMESTAMP
      66. ));
      67. $cronjobList = array();
      68. foreach($cronjobResult as $cronjobRow)
      69. {
      70. $cronjobList[] = $cronjobRow['cronjobID'];
      71. }
      72. return $cronjobList;
      73. }
      74. static function getLastExecutionTime($cronjobName)
      75. {
      76. require_once 'includes/libs/tdcron/class.tdcron.php';
      77. require_once 'includes/libs/tdcron/class.tdcron.entry.php';
      78. $sql = 'SELECT MAX(executionTime) as executionTime FROM %%CRONJOBS_LOG%% INNER JOIN %%CRONJOBS%% USING(cronjobId) WHERE name = :cronjobName;';
      79. $lastTime = Database::get()->selectSingle($sql, array(
      80. ':cronjobName' => $cronjobName
      81. ), 'executionTime');
      82. if(empty($lastTime))
      83. {
      84. return false;
      85. }
      86. return strtotime($lastTime);
      87. }
      88. static function reCalculateCronjobs($cronjobID = NULL)
      89. {
      90. require_once 'includes/libs/tdcron/class.tdcron.php';
      91. require_once 'includes/libs/tdcron/class.tdcron.entry.php';
      92. $db = Database::get();
      93. if(!empty($cronjobID))
      94. {
      95. $sql = 'SELECT cronjobID, min, hours, dom, month, dow FROM %%CRONJOBS%% WHERE cronjobID = :cronjobId;';
      96. $cronjobResult = $db->select($sql, array(
      97. ':cronjobId' => $cronjobID
      98. ));
      99. }
      100. else
      101. {
      102. $sql = 'SELECT cronjobID, min, hours, dom, month, dow FROM %%CRONJOBS%%;';
      103. $cronjobResult = $db->select($sql);
      104. }
      105. $sql = 'UPDATE %%CRONJOBS%% SET nextTime = :nextTime WHERE cronjobID = :cronjobId;';
      106. foreach($cronjobResult as $cronjobRow)
      107. {
      108. $cronTabString = implode(' ', array($cronjobRow['min'], $cronjobRow['hours'], $cronjobRow['dom'], $cronjobRow['month'], $cronjobRow['dow']));
      109. $nextTime = tdCron::getNextOccurrence($cronTabString, TIMESTAMP + 60);
      110. $db->update($sql, array(
      111. ':nextTime' => $nextTime,
      112. ':cronjobId' => $cronjobRow['cronjobID'],
      113. ));
      114. }
      115. }
      116. }
      Display All
    • [21-Jun-2019 13:30:10 Europe/Warsaw] PHP Fatal error: Class 'DMCornjob' not found in /includes/classes/Cronjob.class.php on line 56

      Maybe mispelling? You have DMCornjob on database and maybe you wanted DMCronjob from the file class name, or vice-versa.
    • PHP Source Code

      1. <?php
      2. require_once 'includes/classes/cronjob';
      3. class DMCronjob implements CronjobTask
      4. {
      5. function run()
      6. {
      7. $db = Database::get();
      8. $db->update('update %%USERS%% set darkmatter = darkmatter + 1000'); //Add 1000 DM
      9. }
      10. }
      Display All
    • hallo, du hast mir geholfen mit diesem cron würdest mir einen cron schreiben können, der das ranking prüft und zum beispiel top 1 wird dunkel und löscht stats am ende des monats? und ich habe noch ein und zwei Dinge insgesamt 1. Ist es möglich, ein Gebäude zu bauen, in dem es möglich ist, zB 1000 Metall zu geben, und während des Angriffs ist es nicht möglich, es vom Planeten zu nehmen? aber damit dort alles genäht werden konnte Und das zweite ist, wo ich einen Händler bearbeiten kann, um zum Beispiel Metall einen Ersatz-DM hinzuzufügen