Home Forums Newsletter Plugin Support Why so slow delivering?

Viewing 34 posts - 1 through 34 (of 34 total)
  • Author
    Posts
  • #8574
    BuckoA51
    Participant

    Hi,

    I’m sending out my very first Newsletter with WordPress and Newsletter this month, after switching from SBI. I have about 1200 subscribers and I’m using Mandrils free plan. I set the max delivery amount to 250 per hour and started the delivery at around 11:15 local time….

    ..It’s now 12:15 local time and Newsletter has only delivered 20 of my e-mails?! At this rate it is going to take days before everyone gets their newsletter. I have configured Cron jobs as per the help file, is there something else I might have missed?

    #8576
    BuckoA51
    Participant

    Turned on logging and in the log files I see this a lot:- 10:10:11 – ERROR – 41334560 – Blocked by transient newsletter_main_engine set 275 seconds ago
    21-06-2013

    Not really got any idea what that means though… 🙁

    #8579
    Stefano
    Keymaster

    That is not a real error, don’t worry. Are you sure the cron is triggered oin the right way?

    If you enable the log to debug level and send me the log I can better check the problem. It should report how many times the internal job is ran.

    Stefano.

    (Of course send me the log via mail at stefano@satollo.net)

    #8584
    BuckoA51
    Participant

    I followed the help file and added cron job as instructed, that got rid of the warning that cron wasn’t working. I’ll let it run a little longer now log is set to debug then forward the log to you, thank you.

    #8585
    BuckoA51
    Participant

    Have now e-mailed my log file, look out for a message from mattb at top-windows-tutorials.com I didn’t notice until now but I see 21-06-2013 15:45:18 – DEBUG – 41594616 – limits_exceeded> Setting the limits for the first time
    21-06-2013 15:45:18 – DEBUG – 41594664 – limits_exceeded> Max number of emails can send: 20

    Why is this 20 when I’ve set it to 250?

    #8590
    Stefano
    Keymaster

    That notice is about the max number of email per run, there are 12 runs per hour.

    Stefano.

    #8591
    Stefano
    Keymaster

    Hi, I reaplied via email, too, the wget setup seems not correct. Which is your blog url?

    Stefano.

    #8593
    BuckoA51
    Participant

    Thank you for taking the time to help me. My blog URL is http://www.top-windows-tutorials.com/ – I put the cron job address in so as to make sure that it would not be redirected. I believe it is right because Newsletter stopped telling me there was a problem, but of course I may have overlooked something so any suggestions will really help.

    #8596
    Stefano
    Keymaster

    Hi, the acall to the wp-cron.php is not working on your blog, it gives back a 404. Probably your administration side is not:

    http://www.top-windows-tutorials.com/wp-admin

    but you have the blog installed in a subfolder. Right?

    So the call to the wp-cron.php should look like:

    http://www.top-windows-tutorials.com/sub-folder/wp-cron.php

    Stefano.

    #8670
    BuckoA51
    Participant

    Ok I have changed it, I have another newsletter to go out on the 10th so I will let you know if there is any improvement, thanks again.

    #8716
    BuckoA51
    Participant

    No joy, still exceptionally slow sending, any other ideas?

    #8717
    Stefano
    Keymaster

    Hi, can you send me the exact cron call you configured? Did you used the wget commend? Can you test it to see if it is working?

    Stefano.

    #8721
    BuckoA51
    Participant

    Hi, certainly, the command is:-

    wget –delete-after http://www.top-windows-tutorials.com/site/wp-cron.php

    I am not sure how to test it? I know that when I set it up the warning in Newsletter disappeared. It’s set to run every 5 minutes (Minute */5).

    #8723
    Stefano
    Keymaster

    Ok, the wget seems correct. But do you experience a slow delivery or something else (for example the newsletter starts too late)?

    In the log do you still have “limit exceeded”?

    Stefano.

    #8725
    BuckoA51
    Participant

    Slow delivery, as in only sending a few e-mails per hour instead of the limit I have set. I saw this in the log today, is something telling Newsletter to reset its send limits?:-

    Starting
    10-07-2013 09:32:31 – DEBUG – 41236048 – hook_newsletter> Emails found in sending status: 1
    10-07-2013 09:32:31 – DEBUG – 41236384 – hook_newsletter> Sending email 3
    10-07-2013 09:32:31 – DEBUG – 41459336 – limits_exceeded> Setting the limits for the first time
    10-07-2013 09:32:31 – DEBUG – 41459384 – limits_exceeded> Max number of emails can send: 20
    10-07-2013 09:32:31 – DEBUG – 41458000 – Replace start
    10-07-2013 09:32:31 – DEBUG – 41546768 – Replace end

    I have max e-mails per hour set to 250 that’s under what my SMTP server can handle.

    #8738
    Stefano
    Keymaster

    250 email per hour and 20 email per run (12 runs per hour) are correct numbers. If they are not respected, probably the wget does not work. Try to remove the –delete and look at the wp-cron.php file that the command should generate.

    #8946
    BuckoA51
    Participant

    ok I did that, the wp-cron.php file was created, do you want me to post the contents?

    #8949
    Stefano
    Keymaster

    No, the wp-cron.php should be empty is does not contain valuable information. So it’s better to enable the loggin of newsletter at least to the “normal” level (see the diagnostic panel) so we can look at the log file generated (wp-content/logs).

    #8951
    BuckoA51
    Participant

    The cron file is definitely not empty. I have log level set to debug already, what should I do next?

    #8952
    Stefano
    Keymaster

    Not empty? This is not ok. Can you report me the content?

    #8953
    BuckoA51
    Participant

    of course:-

    <?php
    /**
     * WordPress Cron Implementation for hosts, which do not offer CRON or for which
     * the user has not set up a CRON job pointing to this file.
     *
     * The HTTP request to this file will not slow down the visitor who happens to
     * visit when the cron job is needed to run.
     *
     * @package WordPress
     */
    
    ignore_user_abort(true);
    
    if ( !empty($_POST) || defined('DOING_AJAX') || defined('DOING_CRON') )
    	die();
    
    /**
     * Tell WordPress we are doing the CRON task.
     *
     * @var bool
     */
    define('DOING_CRON', true);
    
    if ( !defined('ABSPATH') ) {
    	/** Set up WordPress environment */
    	require_once('./wp-load.php');
    }
    
    // Uncached doing_cron transient fetch
    function _get_cron_lock() {
    	global $_wp_using_ext_object_cache, $wpdb;
    
    	$value = 0;
    	if ( $_wp_using_ext_object_cache ) {
    		// Skip local cache and force refetch of doing_cron transient in case
    		// another processs updated the cache
    		$value = wp_cache_get( 'doing_cron', 'transient', true );
    	} else {
    		$row = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", '_transient_doing_cron' ) );
    		if ( is_object( $row ) )
    			$value = $row->option_value;
    	}
    
    	return $value;
    }
    
    if ( false === $crons = _get_cron_array() )
    	die();
    
    $keys = array_keys( $crons );
    $gmt_time = microtime( true );
    
    if ( isset($keys[0]) && $keys[0] > $gmt_time )
    	die();
    
    $doing_cron_transient = get_transient( 'doing_cron');
    
    // Use global $doing_wp_cron lock otherwise use the GET lock. If no lock, trying grabbing a new lock.
    if ( empty( $doing_wp_cron ) ) {
    	if ( empty( $_GET[ 'doing_wp_cron' ] ) ) {
    		// Called from external script/job. Try setting a lock.
    		if ( $doing_cron_transient && ( $doing_cron_transient + WP_CRON_LOCK_TIMEOUT > $gmt_time ) )
    			return;
    		$doing_cron_transient = $doing_wp_cron = sprintf( '%.22F', microtime( true ) );
    		set_transient( 'doing_cron', $doing_wp_cron );
    	} else {
    		$doing_wp_cron = $_GET[ 'doing_wp_cron' ];
    	}
    }
    
    // Check lock
    if ( $doing_cron_transient != $doing_wp_cron )
    	return;
    
    foreach ( $crons as $timestamp => $cronhooks ) {
    	if ( $timestamp > $gmt_time )
    		break;
    
    	foreach ( $cronhooks as $hook => $keys ) {
    
    		foreach ( $keys as $k => $v ) {
    
    			$schedule = $v['schedule'];
    
    			if ( $schedule != false ) {
    				$new_args = array($timestamp, $schedule, $hook, $v['args']);
    				call_user_func_array('wp_reschedule_event', $new_args);
    			}
    
    			wp_unschedule_event( $timestamp, $hook, $v['args'] );
    
     			do_action_ref_array( $hook, $v['args'] );
    
    			// If the hook ran too long and another cron process stole the lock, quit.
    			if ( _get_cron_lock() != $doing_wp_cron )
    				return;
    		}
    	}
    }
    
    if ( _get_cron_lock() == $doing_wp_cron )
    	delete_transient( 'doing_cron' );
    
    die();
    
    #8962
    Stefano
    Keymaster

    No, this is the file which contain the WordPress code. When you “call” that file WordPress execute it and return a blank page.

    If you set up the wget call, wget will save a copy of the result in a file named wp-cron.php (the same name of the called file).

    Probably it saves it on your account root, you should ask the provider.

    Stefano.

    #8963
    BuckoA51
    Participant

    So there should be two files called wp-cron.php? I’ve looked all over with my FTP client and I can only find that one, does that mean the cron job isn’t working?

    #8964
    Stefano
    Keymaster

    Hi I don’t know how the cron jobs work on your site. Can you ask the provider to set up a wget call every five minutes for the file wp-cron.php?

    Stefano.

    #9007
    BuckoA51
    Participant

    I found the wp-cron.php files, there are now a ton of them! Here is the contents of one:-

    
    <div class="wrap"><h2>Sucuri SiteCheck Malware Scanner</h2><h3><img style="position:relative;top:5px" height="22" width="22" src="
                 http://www.top-windows-tutorials.com/site/wp-content/plugins/sucuri-scanner/images/ok.png" /> &nbsp;
                 No malware was identified</h3><p><strong>Malware:</strong> No.</p><p><strong>Malicious javascript:</strong> No.</p><p><strong>Malicious iframes:</strong> No.</p><p><strong>Suspicious redirections (htaccess):</strong> No.</p><p><strong>Blackhat SEO Spam:</strong> No.</p><p><strong>Anomaly detection:</strong> Clean.</p><i>More details here <a href="http://sitecheck.sucuri.net/scanner/?&scan=http://www.top-windows-tutorials.com">http://sitecheck.sucuri.net/scanner/?&scan=http://www.top-windows-tutorials.com</a></i><hr />
    <h3><img style="position:relative;top:5px" height="22" width="22" src="
                     http://www.top-windows-tutorials.com/site/wp-content/plugins/sucuri-scanner/images/ok.png" /> &nbsp;
                     Site blacklist-free</h3><b>CLEAN: </b>Domain clean by Google Safe Browsing: top-windows-tutorials.com <a href=''>http://safebrowsing.clients.google.com/safebrowsing/diagnostic?site=top-windows-tutorials.com</a><br /><b>CLEAN: </b>Domain clean by Norton Safe Web: top-windows-tutorials.com <a href=''>http://safeweb.norton.com/report/show?url=top-windows-tutorials.com</a><br /><b>CLEAN: </b>Domain clean on Phish tank: top-windows-tutorials.com <a href=''>http://www.phishtank.com/</a><br /><b>CLEAN: </b>Domain clean on the Opera browser: top-windows-tutorials.com <a href=''>http://opera.com/</a><br /><b>CLEAN: </b>Domain clean by SiteAdvisor: top-windows-tutorials.com <a href=''>http://www.siteadvisor.com/sites/top-windows-tutorials.com</a><br /><b>CLEAN: </b>Domain clean on Sucuri IP/URL malware blacklist: top-windows-tutorials.com <a href=''>http://labs.sucuri.net/?malware</a><br /><b>CLEAN: </b>Domain clean by the Sucuri Malware Labs blacklist: top-windows-tutorials.com <a href=''>http://labs.sucuri.net/?blacklist=top-windows-tutorials.com</a><br /><b>CLEAN: </b>Domain clean on Yandex (via Sophos): top-windows-tutorials.com <a href=''>http://www.yandex.com/infected?url=top-windows-tutorials.com&l10n=en</a><br /><hr />
    <h3><img style="position:relative;top:5px" height="22" width="22" src="
                     http://www.top-windows-tutorials.com/site/wp-content/plugins/sucuri-scanner/images/ok.png" /> &nbsp;
                     System info (WordPress upgraded)</h3><b>Site:</b> http://www.top-windows-tutorials.com   (69.89.31.96  )<br />
    <b>WordPress: </b> 3.5.1<br />
    <b>PHP: </b> 5.3.14<br />
    Running on: Apache<br />
        <br /><br />
        <b>If you have any questions about these scan results, or this plugin, contact us at support@sucuri.net or visit <a href="http://sucuri.net">http://sucuri.net</a></b>
        <br />
        </div>
    

    So cron jobs are working but newsletter still delivers really slowly, any more suggestions? 🙁

    #9008
    Stefano
    Keymaster

    Uhm, usually a plugin should not generated output on wp-cron.php call, and the output you reported seems a piece of an administrative page.

    Have you the sucuri plugin installed?

    #9009
    BuckoA51
    Participant

    Yes I have “FV Sucuri SiteCheck Scanner Cron” plugin installed.

    There are a bunch of other wp-cron files that are empty, but that first one had that content.

    Sending another newsletter today, it’s managed 160 messages in about 7 hours… really really stumped by this.

    #9010
    Stefano
    Keymaster

    So is the wp-cron is coorectly called but newsletter delivery engine is not triggered I think one of your plugin is blocked it. Try to setup a greater speed on newsletter min configuration,.

    You can enable the logs to debug on newsletter diagnostic panel and look at the generated log: you should see a “send” every 5 minutes, if the wp-cron is called every five minutes.

    #9011
    BuckoA51
    Participant

    Nope, still slow even after upping the speed. I keep seeing this in the log file

    10-08-2013 17:32:29 - DEBUG - 41535672 - hook_newsletter> Emails found in sending status: 1
    10-08-2013 17:32:29 - DEBUG - 41536008 - hook_newsletter> Sending email 4
    10-08-2013 17:32:29 - DEBUG - 42159568 - limits_exceeded> Setting the limits for the first time
    10-08-2013 17:32:29 - DEBUG - 42159616 - limits_exceeded> Max number of emails can send: 56

    Every time, not just the first time. Can I forward you the full log to have a look at? It contains peoples e-mail addresses so obviously I don’t want to post it here.

    #9012
    Stefano
    Keymaster

    Yes send it toyemail but in few hours i’ll go away fory holidays so I’ll do my best to look at it.
    P

    #9013
    BuckoA51
    Participant

    Ok I have sent, thanks for all your help and have a great holiday.

    #9168
    BuckoA51
    Participant

    So it is that time of month again when I send the newsletter. I have started a delivery, checked the error logs and there’s nothing in there. However, it seems delivery is going much quicker this time, so maybe something changed in the latest newsletter update or somewhere that fixed the problem? I will keep an eye on it and let you know. Thanks for all your help.

    #9169
    Stefano
    Keymaster

    Hi, I can confirm nothing has been changed about the delivery engine on latest releases. Probably the cron system if now working correctly, maybe you installed a cron call?

    #9174
    BuckoA51
    Participant

    Nope cron has always been working, if you remember I turned off the delete part to see if it definitely worked and got a home directory full of wp-cron files. maybe something in the WordPress update caused it to work better?

Viewing 34 posts - 1 through 34 (of 34 total)
  • You must be logged in to reply to this topic.