我正在使用phpmailer发送效果很好的电子邮件.然而,问题是,由于它同步发送电子邮件,因此随后的页面加载需要很长时间. 我正在使用phpmailer,如此示例所示.com/phpmailer/phpmailer/blob/master/xpess/xples/gmail.phps 我想知道是否有一种方法可以使电子邮件发送异步.我对此进行了研究,发现SendMail可以选择将DeliveryMode设置为"背景模式" - 源 http ://php.net/manual/en/function.mail.php mail($to, $subject, $message, $headers, 'O DeliveryMode=b'); 我想知道phpmailer是否可以做类似的事情?有人对此有任何成功吗? 编辑: - (附加信息)似乎可以配置phpmailer使用sendmail- /** * Which method to use to send mail
以下是关于 asynchronous 的编程技术问答
我想在项目中使用PHP卷曲也希望在不同的情况下发送数据异步,而不是等待完成的卷曲请求. 我可以使用卷曲参数或功能来发送数据异步,而不是等待目标URL的响应以继续执行代码? 现在是我的代码,默认情况下该请求是同步的,脚本等待直到发送目标URL的响应. $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_POST,1); curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch,CURLOPT_POSTFIELDS,$data); $result = curl_exec($ch); curl_close($ch); 我的应用程序有两种情况: 1)数据需要传递到辅助服务器,一旦确认服务器已接收到它,请在我的应用程序中继续执行代码; 2)数据传递给辅助服务器,但是传递的信息并不重要,因此,我们不需要
MySQLND驱动程序PHP 5.6有机会使用异步查询 如何使用PDO使用异步查询? 这是不起作用的,代码( php asynchronous mysql-query ) > $dbConnectionOne = new \PDO($cnn0, $conf['user'], $conf['pass']); $dbConnectionOne->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); $dbConnectionTwo = new \PDO($cnn0, $conf['user'], $conf['pass']); $dbConnectionTwo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); $dbConnectionTwo->setAttribute(\PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,
我正在创建将通过命令行运行的PHP脚本.作为此脚本的一部分,有时候我可能需要产生一个不同的脚本,这可能需要很长时间才能完成.我不想阻止原始脚本完成.如果我使用JavaScript进行此操作,我可以在后台运行Ajax请求.从本质上讲,这是我在这里想做的.我不需要知道叉子何时完成,只是他们开始并完成自己. 如何异步运行这些PHP脚本? foreach ($lotsOfItems as $item) { if ($item->needsExtraHelp) { //start some asynchronous process here, and pass it $item } } 解决方案 $pids = array(); foreach ($lotsOfItems as $item) { if ($item->needsExtraHelp) { $pid = pcntl_fork(); if ($pi
我正在尝试在PHP中创建火灾并忘记方法,以便我可以POST数据到Web服务器,而不是等待响应.我读到可以通过在以下代码中使用CURL来实现这一点: $ch = curl_init($url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); curl_exec($ch); curl_close($ch); 但是,我认为它不如我所期望的那样起作用.例如,如果我将请求发送到有错误,则导致我的脚本也会引发错误.如果是火而忘记,我希望不会发生. 任何人都可以告诉我我是做错了什么还是提供替代建议.我在本地使用Windows和Linux进行开发,分期和生产环境. 更新 我在这里找到了另一种解决方案: http://blog.markturansky.com/archives.com/archives.com/archives/205 我
我有以下两个功能 public function myEndpoint(){ $this->logger->debug('Started'); $this->guzzle->requestAsync('post', 'http://myurl.com/doNotWait')->wait(); $this->logger->debug("I shouldn't wait"); } public function doNotWait(){ sleep(10); $this->logger->debug("You shouldn't wait"); } 现在我需要在日志中看到的是: Started I shouldn't wait You shouldn't wait 但是我看到的 Started You shouldn't wait I shouldn't wait 我也尝试使用以下方式: 方法#1 publ
这是一个屏幕截图: task : Codeception PHP Testing Framework v1.6.2 Powered by PHPUnit 3.7.19 by Sebastian Bergmann. Suite selenium_acceptance started Trying to see the welcome page of newweather (welcomeCept.php) issue : it sits as it is and waiting for phantomJS to respond and below is what phantomJS screen is showing : [INFO - 2014-03-13T01:42:51.575Z] SessionManagerReqHand - _postNewSessionCommand - New Session Created: ca14e740-aa50-11e3-bb6b
在我的一个应用程序中,我想将异步称为我写过的PHP页面(http://serveradress/page.php?date = 20111231),我一定会知道该页面是否可以是称为(NO 404错误,PHP服务器倒计数,自定义404页,缺少Internet连接或某些类似的内容). 我已经计划使PHP页面返回一个非常简单的HTML页面,其正文或标题中只有"确定". 这将是一个"幻影"呼叫,而无需使用任何UIWebView,或者如果真的很重要,则是一个隐藏的Uiwebview,但我希望避免这种情况. 你能帮我写这个电话吗? 并确保知道是否已加载? 我看到我可能应该使用nsurlconnection,但我有点丢失. 你能帮我吗? 解决方案 nsurlConection是异步加载的非常好的解决方案.创建一个步骤几乎没有. 1.设置您的nsurlconnection - (void)viewDidLoad { // your code...
我有一个函数 function do_something() { // process $this->load->view('some_view', $data); exec('mv /path/to/folder1/*.mp3 /path/to/folder2/'); } 我的目的是在输出视图后移动文件.但是显然它是在呈现视图之前完成的.我的问题是,$this->load->view();必须是函数的最后一步吗? 我做了一些研究,似乎我的问题类似于这个主题.正确? 解决方案 为什么不使用post_system钩?在最后页面发送到浏览器后,它是在浏览器发送后的,这样您就可以正常加载视图,而无需回声. 这是一个示例控制器: class Home extends Controller { function index() { $this->move_audio = TRUE; $th
我有充分的理由相信两个函数rename()和unlink()都是异步的,这是从我的理解中,这意味着,当调用函数时,在调用函数时,下方的代码在完成文件系统上的过程之前将继续使用. .这是Internet应用程序的问题,我将在下面解释,因为以后的代码取决于这些更改已将其设置为石头.因此,是否有一种使同步的方法,以便读取这些功能时的代码读取器会冻结,直到其所有任务都在文件系统上进行全部执行? 这是delete-image.php中的代码,该代码由Ajax从另一个admin-images.php调用(后者将不会显示): ` foreach ($dirScan as $key => $value) { $fileParts = explode('.', $dirScan[$key]); if (isset($fileParts[1])) { if ((!($fileParts[1] == "gif") && !($fil
我正在尝试使用API发送SMS.它每秒发送了几乎一个SMS,但我想在一秒钟内使用PHP中的多线程/PTHREADS发送多个SMS.至少从我的结尾处将多个SMS请求异步发送到API服务器. //Threads Class class MThread extends Thread { public $data; public $result; public function __construct($data){ $this->data = $data; } public function run() { foreach($this->data as $dt_res){ // Send the POST request with cURL $ch = curl_init("http://www.example.com"); curl_setopt($ch, CURLOPT_POST, tru
我有执行3个任务的Ajax请求: 保存模型(DB) 发送电子邮件 提供成功或失败的消息. 因为此任务花费了时间.用户可以等待20秒钟的响应(成功或失败消息).如果用户关闭浏览器,则在该当前过程的操作之一中停止了用户. 这是不良的用户体验. 我希望用户将数据提交给我的控制器,然后他将获得"成功或失败消息".并且该过程将完全在服务器端,并且应该支持多个会话. 我该怎么做? 解决方案 @hakre您给出的东西不减少用户等待响应的时间. 我找到了最好的解决方案: yii的Runactions扩展名 这是扩展程序,让您从控制器背景操作中运行. 有几种使用它的方法.我的情况最好的是这个 public function actionTimeConsumingProcess() { if (ERunActions::runBackground()) { //do all the stuff that should
我是jQuery的实施Ajax方法. 我有一个简单的设置,可以访问两个不同的页面,一个需要10秒才能完成(我在其上设置了一个计时器),一个检查了第一页的状态. 这两个函数是progressCheck(),每秒都以最新状态请求其页面,并且beginLogin()加载需要10秒钟.我在服务器上的用户对象中设置了一个值,该值两个页面都可以通过Symfony 1.4访问. 问题是progressCheck()在我单击beginLogin()之前正常工作,然后直到完成beginLogin()才能进行更改.我都有两个功能设置以异步运行.我知道这一定很容易弄清楚,但我茫然. 我运行此页面时运行了firebug-网络,结果是: 在等待期间,progressCheck()的许多progressCheck()在10秒钟的等待期间被调用,但Net表示它们在200毫秒内跑了,没有任何等待时间. 有什么想法? 代码下面:
我遇到了一个问题,我的数据库调用正在大大减慢页面加载.我从选举数据中填充了多个图表,我的表包含约100万行,我必须在getCharts()方法中的每种方法中多次查询此数据. i'am 使用此将返回数据传递给JavaScript . 单击数据点时,这些图表将重新填充.因此,如果您单击一个点,即("民主党),它将重新加载页面并再次调用这些方法. 我要问的是,有可能在本机PHP中做类似的事情.服务器在Linode上运行PHP 5.2. foreach(function in getChartsMethod){ Start a child thread to process the function. } join the threads. reload the page. public function getCharts(){ $this->get_cast_chart(); $this->get_party_c
我有php's mail()使用 ssmtp 没有队列/spool,并且与AWS同步,并且ses. 我听说我可以使用 swiftmail 提供一个线轴,但我无法像目前那样使用一个简单的食谱来使用它使用mail(). 我想要最少的代码来提供异步邮件.我不在乎电子邮件是否未发送,但是有登录会很高兴. 有什么简单的提示还是技巧?缺少运行完整的邮件服务器?我当时认为sendmail包装器可能是答案,但我无法完成nohup. 解决方案 php-fpm 您必须运行 fastcgi_finish_request 可用. echo "I get output instantly"; fastcgi_finish_request(); // Close and flush the connection. sleep(10); // For illustrative purposes. Delete me. mail("test@example.org", "lol",
我一直在对ReactPHP进行一些测试,因为它看起来很棒.我已经使用以下 react/socket 代码,对于简单的套接字. $loop = React\EventLoop\Factory::create(); $socket = new React\Socket\Server($loop); $socket->on('connection', function ($conn) { echo 'New client !'; $conn->on('data', function ($data) use ($conn) { $conn->write("Wow, some data, such cool\n"); $conn->close(); }); }); $socket->listen(1337); $loop->run(); 直到这一点,还没有问题.服务器显示New client !连接客户端并接收响应时.