所述HttpRequestPool类提供了一个解决方案.非常感谢那些指出这一点的人.
可以在以下网址找到简要教程:http://www.phptutorial.info/?HttpRequestPool-construct
问题
我想在PHP中进行并发/并行/同时的HTTP请求.我想避免连续请求:
我已经设法找到使用cURL在PHP中制作simultaneousuos [sic] HTTP请求的详细信息,但是如果可能的话,我想明确地使用PHP的HTTP函数.
具体来说,我需要将数据同时发布到一组URL.发布数据的网址超出了我的控制范围; 他们是用户设置的.
我不介意是否需要等待所有请求完成才能处理响应.如果我在每个请求上设置超时30秒并且同时发出请求,我知道我必须等待最多30秒(可能多一点)才能完成所有请求.
我找不到如何实现这一目标的细节.但是,我最近注意到在PHP手册中提到PHP5 +能够处理并发HTTP请求 - 我打算在当时记下它,忘记了,再也找不到它了.
单个请求示例(工作正常)
<?php
$request_1 = new HttpRequest($url_1, HTTP_METH_POST);
$request_1->setRawPostData($dataSet_1);
$request_1->send();
?>
Run Code Online (Sandbox Code Playgroud)
并发请求示例(不完整,清楚)
<?php
$request_1 = new HttpRequest($url_1, HTTP_METH_POST);
$request_1->setRawPostData($dataSet_1);
$request_2 = new HttpRequest($url_2, HTTP_METH_POST);
$request_2->setRawPostData($dataSet_2);
// ...
$request_N = new HttpRequest($url_N, HTTP_METH_POST);
$request_N->setRawPostData($dataSet_N);
// Do something to send() all requests at the same time
?>
Run Code Online (Sandbox Code Playgroud)
任何想法都将非常感激!
澄清1:我想坚持PECL HTTP功能:
我需要一个(php)正则表达式来匹配雅虎的用户名规则:
使用4到32个字符并以字母开头.您可以使用字母,数字,下划线和一个点(.).
我有以下代码在URL上发出GET请求:
$('#searchButton').click(function() {
$('#inquiry').load('/portal/?f=searchBilling&pid=' + $('#query').val());
});
Run Code Online (Sandbox Code Playgroud)
但返回的结果并不总是反映出来.例如,我更改了堆栈跟踪的响应,但是当我单击搜索按钮时没有出现堆栈跟踪.我查看了控制ajax响应的底层PHP代码,它有正确的代码,直接访问页面显示正确的结果,但.load返回的输出是旧的.
如果我关闭浏览器并重新打开它,它会工作一次,然后开始返回陈旧的信息.我可以通过jQuery控制它,还是需要我的PHP脚本输出头来控制缓存?
我试图显示一系列从60个字符到160左右的标题,并且大写字母各不相同,其中一些是全部大写,一半是大写字母.当它大部分是小写时,整个160个字符的文字符合我想要的宽度,但是当它开始获得更多的大写(它们必须更宽)时,它开始流动.
有没有办法使用有吸引力的固定witdh字体(大写和小写宽度相同),或动态缩小文本以适应,或以其他方式识别文本将在服务器端采取多少空间,并切断动态结束?或者你们有更好的解决方案吗?
我正在尝试编写一个正则表达式,它将使用匹配组解析完全限定路径的目录和文件名.
所以...
/var/log/xyz/10032008.log
Run Code Online (Sandbox Code Playgroud)
将承认group 1 to be "/var/log/xyz"和group 2 to be "10032008.log"
看似简单,但我不能让匹配的团队为我的生活工作.
注意:正如一些受访者所指出的,这可能不是正常表达的好用.通常我更喜欢使用我正在使用的语言的文件API.我实际上要做的事情比这复杂得多,但要解释起来要困难得多,所以我选择了一个每个人都熟悉的域名,以便最简洁地描述根本问题.
对于那些没有阅读过代码完成2的人来说,伪代码编程过程基本上是一种设计例程的方法,首先用简单的英语描述它,然后逐步修改为更详细的伪代码,最后编写代码.这样做的主要好处是通过自上而下而不是自下而上构建系统来帮助您保持正确的抽象级别,从而在不同的层中构建一个干净的API.我发现TDD在这方面效果较差,因为它过于注重做最低限度的测试以通过并鼓励一点点前期设计.我还发现,必须为不稳定的代码(不断重构的代码)维护一套单元测试是非常困难的,因为通常情况下你需要对例程进行十几次单元测试,只需要一次或两次.当您进行重构时 - 例如更改方法签名 - 您所做的大部分工作是更新测试而不是更新prod代码.在组件的代码稳定了一点之后,我更喜欢添加单元测试.
我的问题是 - 那些尝试过两种方法的人,你更喜欢哪种方法?
如何编写一个装饰器,将当前工作目录恢复到调用修饰函数之前的状态?换句话说,如果我在执行a的函数上使用装饰器,则在调用函数os.chdir()后不会更改cwd.
作为一个很少(或没有)艺术倾向的开发人员,您如何为应用程序设计GUI?特别是,我正在考虑桌面应用程序,但也欢迎任何与Web应用程序相关的内容.我觉得很难设计出我和潜在用户都喜欢的东西.我可以在网上查找配色方案,但我怎么知道按钮/文本框等的位置?
更新:澄清一下,我并不是指使用什么控件等.相反,当我应该按钮,组合,文本框等时,是否有任何指导/提示?他们应该多久,我会把它们放在表格上?
在规划新系统开发的最初阶段,遵循哪种开发模式似乎是最重要的.我一直坚信经典瀑布(或混合瀑布/迭代原型)是中型到大型项目的最佳方法.似乎一旦项目达到一定规模,Agile/XP/Scrum范例就无法解决复杂的需求,庞大的团队,多个子系统之间的复杂性,文档需求,人员变动等等,等等
在系统规模,团队规模,LOC等方面,这种敏捷方法的限制是什么?
我处于这样一种情况,我将为数据库生成一个脚本,我可以在另一台服务器上运行并获得与原始数据库相同的数据库,但没有任何数据.实质上,我希望最终得到一个捕获数据库模式的大型创建脚本.
我在安装了SQL Server 2000的环境中工作,我无法安装2005客户端工具(如果他们有帮助).我负担不起RedGate,但我真的希望在另一台服务器上拥有一个具有相同架构的数据库.
有什么建议?任何简单的.exe(无需安装)工具,技巧或T-SQL技巧都将非常受欢迎.
更新:我正在使用的数据库有200多个表和几个外键关系和约束,因此手动编写每个表并将脚本粘贴在一起并不是一个可行的选择.我正在寻找比这个手动解决方案更好的东西
其他更新除非我完全遗漏了某些内容,否则这不是使用SQL 2000工具的可行解决方案.当我选择在数据库上生成创建脚本的选项时.我最终得到一个包含CREATE DATABASE命令的脚本,并且没有创建任何对象 - 表,约束等.SQL 2005的Management Studio也可以处理这些对象,但数据库处于没有对象的环境中我可以将Management Studio的安装连接到它.