XF 1.1 Cron Entry for CometChat

Jake Bunce

XenForo moderator
Staff member
#2
The callback needs a class and method within XenForo's namespace. Create a directory and PHP file to define a class. For example, create:

library/Comet/Cron.php

Code:
<?php

class Comet_Cron
{
	public static function runCron()
	{
		include 'http://www.yoursite.com/cometchat/cron.php';
	}
}
Then your callback would be:

Class = Comet_Cron
Method = runCron
 

Jeff Fuqua

Well-known member
#3
Thanks for your reply.

There's already a cron.php on the root for another xenforo add-on. Can I name this "cron2.php" and change the code you gave me to say "runCron2" on the fifth line?
 

Jeff Fuqua

Well-known member
#7
Sorry for the confusion.

The Comet folder was installed on the root. There is no Comet folder in the library right now.

Do I need to make one?
 

Jeff Fuqua

Well-known member
#9
Okay. Got a Cron.php file as you outlined in post #2 above and placed it in a Comet folder in the library. Here's the result when I made a run:

Server Error

include() [function.include]: http:// wrapper is disabled in the server configuration by allow_url_include=0
  1. XenForo_Application::handlePhpError() in Comet/Cron.php at line 7
  2. Comet_Cron::runCron() in Comet/Cron.php at line 7
  3. Comet_Cron::runCron()
  4. call_user_func() in XenForo/Model/Cron.php at line 356
  5. XenForo_Model_Cron->runEntry() in XenForo/ControllerAdmin/Cron.php at line 204
  6. XenForo_ControllerAdmin_Cron->actionRun() in XenForo/FrontController.php at line 310
  7. XenForo_FrontController->dispatch() in XenForo/FrontController.php at line 132
  8. XenForo_FrontController->run() in /home/xxxxxx/public_html/admin.php at line 13
 
#13
I am trying to do something similar - I want to create some tables on my database and have the php file:

/library/UpdateRatingsComments/Ratings.php

to do the job.

I want a cron to run the php regularly.

I have created the following Cron.php file:

PHP:
<?php
 
class Ratings_Cron
{
    public static function runCron()
    {
        include 'http://www.arsenaltalk.net/library/UpdateRatingsComments/Ratings.php';
    }
}
When creating my cron I am using

Class : Ratings_Cron
Method : runCron

however I get the following error:

"Please enter a valid callback method." when trying to create the cron job

What am I doing wrong here?
 
#16
Finally not completely solved. I got this error...

Erreur Info
ErrorException: session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot send session cache limiter - headers already sent (output started at /home2/grenon/public_html/library/XenForo/Cron.php:47) - cometchat/cometchat_init.php:85
Généré par: Compte inconnu, Aujourd'hui à 14:40
Trace de la pile
#0 [internal function]: XenForo_Application::handlePhpError(2, 'session_start()...', '/home2/grenon/p...', 85, Array)
#1 /home2/grenon/public_html/cometchat/cometchat_init.php(85): session_start()
#2 /home2/grenon/public_html/cometchat/modules.php(3): include_once('/home2/grenon/p...')
#3 /home2/grenon/public_html/cometchat/cron.php(56): include_once('/home2/grenon/p...')
#4 /home2/grenon/public_html/library/Comet/Cron.php(7): include('/home2/grenon/p...')
#5 [internal function]: Comet_Cron::runCron(Array)
#6 /home2/grenon/public_html/library/XenForo/Model/Cron.php(356): call_user_func(Array, Array)
#7 /home2/grenon/public_html/library/WhoHasReadAThread/Model/Cron.php(30): XenForo_Model_Cron->runEntry(Array)
#8 /home2/grenon/public_html/library/XenForo/Cron.php(29): WhoHasReadAThread_Model_Cron->runEntry(Array)
#9 /home2/grenon/public_html/library/XenForo/Cron.php(64): XenForo_Cron->run()
#10 /home2/grenon/public_html/cron.php(12): XenForo_Cron::runAndOutput()
#11 {main}
État de la demande
array(3) {
["url"] => string(46) "http://www.miui-france.org/cron.php?1350909642"
["_GET"] => array(1) {
[1350909642] => string(0) ""
}
["_POST"] => array(0) {
}
}
Anyone can help me? Thanks!
 

Jake Bunce

XenForo moderator
Staff member
#19
Surround your require or include line with ob functions. This is the code example linked above:

Code:
        ob_start();
        require('/path/to/your/html/file.html');
        $myContent = ob_get_contents();
        ob_end_clean();
 
#20
Hum ok but what should I use instead of the
$myContent
???

Currently my file looks like this:

PHP:
 <?php
 
class Comet_Cron
{
    public static function runCron()
    {
        include '/home2/grenon/public_html/cometchat/cron.php';
    }
}
 
Top