Jump to content

Delaying sms sending from php script


MerNion

Recommended Posts

Hey all,

I have a simple php script that whenever it is run (it is called x times per day from crontab) it sends out an sms to 10 people. Unfortunatelly the cell carrier has put a "delay" threshold of 30 seconds between sms that you can send in order to prevent sms spamming. The problem is that my script had a foreach loop that it just send out the sms to everyone so it took around 0.5-1 second for each sms.. Way to low for the 30 seconds that now are enforced.

 

Do you have any ideas of what i can do to "force" my script to obey that 30 second delay between each sms?

I thought of putting a cron job every 1 minute and send one by one the sms but wouldn't that be a problem to the server to have to execute 1440 times per day a script?

I also thought of using some sleep function but i don't know if that would result in finally the script to output a success result after 10*30=300seconds(5mins)..

 

Any ideas are appreciated!

Link to comment
Share on other sites

Thx micah1701. I will try that and come back with the result.

@fortnox007. You need either to find a gateway service or use your own cellphone through the serial port... The easier is the first and you pay per sms you send.. Try googling "SMS gateway". You can use several ways to actually send it from the php to the server.

Link to comment
Share on other sites

this is easiest way to send sms

 

THE FORM

<form id="sms" name="sms" method="post" action="scripts/send_sms.php">
<table width="400">
  <tr>
    <td align="right" valign="top">From:</td>
    <td align="left"><input name="from" type="text" id="from" size="30" /></td>
  </tr>
  <tr>
    <td align="right" valign="top">To:</td>
    <td align="left"><input name="to" type="text" id="to" size="30" /></td>
  </tr>
  <tr>
    <td align="right" valign="top">Carrier:</td>
    <td align="left"><select name="carrier" id="carrier">
      <option value="verizon">Verizon</option>
      <option value="tmobile">T-Mobile</option>
  <option value="sprint">Sprint</option>
  <option value="att">AT&T</option>
  <option value="virgin">Virgin Mobile</option>
    </select></td>
  </tr>
  <tr>
    <td align="right" valign="top">Message:</td>
    <td align="left"><textarea name="message" cols="40" rows="5" id="message"></textarea></td>
  </tr>
  <tr>
    <td colspan="2" align="right"><input type="submit" name="Submit" value="Submit" /></td>
    </tr>
</table>
</form>

 

 

the EXE script:

<?php
$from = $_POST['from'];
$to = $_POST['to'];
$carrier = $_POST['carrier'];
$message = stripslashes($_POST['message']);

if ((empty($from)) || (empty($to)) || (empty($message))) {
header ("Location: sms_error.php");
}

else if ($carrier == "verizon") {
$formatted_number = $to."@vtext.com";
mail("$formatted_number", "SMS", "$message"); 
// Currently, the subject is set to "SMS". Feel free to change this.

header ("Location: sms_success.php");
}

else if ($carrier == "tmobile") {
$formatted_number = $to."@tomomail.net";
mail("$formatted_number", "SMS", "$message");

header ("Location: sms_success.php");
}

else if ($carrier == "sprint") {
$formatted_number = $to."@messaging.sprintpcs.com";
mail("$formatted_number", "SMS", "$message");

header ("Location: sms_success.php");
}

else if ($carrier == "att") {
$formatted_number = $to."@txt.att.net";
mail("$formatted_number", "SMS", "$message");
header ("Location: sms_success.php");
}

else if ($carrier == "virgin") {
$formatted_number = $to."@vmobl.com";
mail("$formatted_number", "SMS", "$message");

header ("Location: sms_success.php");
}
?>

Link to comment
Share on other sites

Yeah ok, just don't continue off topic in my thread please... And just for the record these are just 17 out of the 195 :o  :P

 

Back to my original post subject:

I did put the sleep(30) there but it "pauses" the output of the page as well on each turn in the foreach statement..

 

$users = ("bob"=>"94124912421", "lol"=>"4134241242", "paul"=>"41240241");

foreach ($users as $user=>$cell) {
echo "Sending message to user " . $user . "<br>";
send($cell,"test");
sleep(30);
}

 

What happens is that it looks like it is loading for 3*30=90seconds and then it outputs all together (with pages fully loaded now)

Sending message to user bob

Sending message to user lol

Sending message to user paul

 

Isn't there a way for this not to happen?

Link to comment
Share on other sites

Thanks! I understand that each send command was executed with 30 second interval and that is ok as for my initial problem of sending them with that delay... The second part though (as to how not to have the page looking of doing nothing for x*30 seconds), is the most challenging one.. Any ideas for that?

Link to comment
Share on other sites

The thing is that this page is both accessed from the users and from crontab... when the user access it i can have the ajax send the SMSs but when its run from the crontab i guess it will just take it a little more time to complete the run... (i have to take into account the max execution time though, right?)

Link to comment
Share on other sites

thanks micah1701. I will try that and come back with the result.

@fortnox007. You need either to find a gateway service or use your own cellphone through the serial port... The easier is the first and you pay per sms you send.. Try googling "SMS gateway". You can use several ways to actually send it from the php to the server.

Thx for you wicked answer ;) I found gateway, but nice to know you can do it via a cell phone too. have a nice eve!

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.