我有php fsockopen命令的问题.
我需要在服务器上打开套接字连接以实现消息交换.如果服务器没有从我的(客户端)端收到任何东西,它会在一定的超时后关闭连接(我不知道我不能改变).
问题是......我怎么知道几分钟前套接字是否仍然存在?
这是我用来打开连接的脚本
$socket = fsockopen("automation.srv.st.com", 7777, $errno, $errstr);
if ($socket === false) {
echo "Unable to open Socket. Error {$errno} : {$errstr}\n";
die();
}
$status = stream_get_meta_data($socket);
print_r($status);
Run Code Online (Sandbox Code Playgroud)
它打印出来
Array
(
[stream_type] => tcp_socket/ssl
[mode] => r+
[unread_bytes] => 0
[seekable] =>
[timed_out] =>
[blocked] => 1
[eof] =>
)
Run Code Online (Sandbox Code Playgroud)
然后写入服务器的每条消息......
fwrite($socket, $message);
Run Code Online (Sandbox Code Playgroud)
...我在200ms内收到反馈:
$answer = fread($socket, 1024);
Run Code Online (Sandbox Code Playgroud)
但是如果我的脚本花了30分钟没有向服务器发送任何消息(因为它没有任何通信),那么服务器会自动关闭连接,我无法理解如何在重新实例化新连接之前检查它:
如果尝试过
if ($socket) echo "The socket is still having a valid resource\n";
Run Code Online (Sandbox Code Playgroud)
但这会回复我的$ socket仍然是一个有效的流资源
我试过了
$status = stream_get_meta_data($socket); …Run Code Online (Sandbox Code Playgroud) HttpClient如果超时,则执行请求4次。如果它没有超时,则说明工作正常。有关系HttpClient吗?
我们在Windows 2008 SP2/IIS 7上托管了一个访问Oracle数据库的C#WCF Web服务.通常数据访问工作正常,但在负载测试期间,它经常超时并记录和异常说:
Error occurred when processing XXXXXXXX Web Service
Oracle.DataAccess.Client.OracleException Connection request timed out at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck)
at Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src)
at Oracle.DataAccess.Client.OracleConnection.Open()
at MyWorkspace.WorkForceDataAccess.CheckStaffIdInRSW()
at MyWorkspace.MyClass.MyFunction(MyDataType MyData)
Run Code Online (Sandbox Code Playgroud)
要查询数据库,我们使用以下内容:
OracleConnection orConn = new OracleConnection();
orConn.ConnectionString = "user id=xxx; password=xxx; Connection Timeout=600; Max Pool Size=150; data source= (DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = MYHOST.MYDOMAIN.com)(PORT = 1771)) (CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME …Run Code Online (Sandbox Code Playgroud) 我正在从事与服务相关的应用程序.
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpParams params = httpClient.getParams();
HttpConnectionParams.setConnectionTimeout(params, 10000000);
HttpConnectionParams.setSoTimeout(params, 15000000);
HttpProtocolParams.setUseExpectContinue(httpClient.getParams(),true);
String str_Server_Host = Control_PWD_Server_Name();
String requestEnvelope = String.format(envelope_oe);
// HttpPost httpPost = new HttpPost(str_Server_Host);
HttpPost httpPost = new HttpPost(str_Server_Host);
httpPost.setHeader("SOAPAction",
"http://tempuri.org/updateTransportStatus");
httpPost.setHeader("Content-Type", "text/xml;charset=utf-8");
httpPost.setEntity(new StringEntity(requestEnvelope));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
line = EntityUtils.toString(httpEntity);
String str = Html.fromHtml(line).toString();
Run Code Online (Sandbox Code Playgroud)
这是我得到的例外:
org.apache.http.conn.ConnectTimeoutException: Connect to /10.64.0.184:9092 timed out
Run Code Online (Sandbox Code Playgroud)
如何解决android中的上述异常?请提供任何建议或相关的senario.
http.request我正在使用 Node.js(版本 0.10.28)为大量数据(来自 PostgreSQL 数据库的 21,000 行)创建 Ruby API 。问题是请求似乎超时并在 1 分钟后返回 404 错误。我知道这是真的,因为 Ruby API 返回 61 秒的请求,并且我计算了 Node 的请求花费的时间(结果为 60 秒和 404)。但是,如果我wget使用 jQuery,$.ajax超时时间为 4 分钟,我可以获得 21,000 行。很明显,它不可能是 404,因为还有其他获取数据的方式。
我也有点困惑,因为无论我看什么,http.request根据以下说法,直到 2 分钟后才应该超时:
我尝试了几种方法来使其正常工作,包括:设置express的中间件;侦听套接字超时并恢复请求;并将超时设置为0,这样就不会超时。不幸的是,这些方法都不起作用,或者至少从我的理解来看是这样。
为了清楚起见,这是我的代码...设置该限制意味着仅返回 18,000 条记录,这似乎是 API 花费超过 60 秒的截止点:
var http = require('http');
var options = {
path: '/api/records.json?limit=18000',
method: 'GET',
host: 'localhost',
requestCert: true,
rejectUnauthorized: false
};
var req = …Run Code Online (Sandbox Code Playgroud) 我最近升级到 2016 年 8 月 12 日发布的 Microsoft hive odbc 驱动程序版本 2.01.05.1006。我的代码适用于驱动程序的先前版本 (1.0)。现在在运行我的代码时,我不断收到以下错误。
错误 [HY000] [Microsoft][Hardy] (72) 查询执行超时已过期。
我已尝试更改 ODBC 驱动程序的超时设置,但它仍然超时。有人有其他建议吗?
keepAliveTimeout 和连接超时有什么区别吗?我正在使用带有 express 的 node.js。我已指定超时如下:
const app = express();
app.listen(3000, '0.0.0.0', () => {
console.log(`The server is running at http://localhost:3000/`);
});
app.on('connection', (socket) => {
socket.setTimeout(60 * 1000);
});
Run Code Online (Sandbox Code Playgroud)
上面的代码会改变 keepAliveTimeout 吗?在浏览器中,我在浏览器中得到的只是Connection: keep-alive标题。如何检查我的应用程序的 keepAliveTimeout ?
我正在尝试将 Kafka Streams 聚合结果插入到 Cassandra 中。但是我在 500 毫秒后连接期间出现超时错误。为什么会发生这种情况以及如何增加此超时或是否可以关闭此查询?
Caused by: com.datastax.oss.driver.api.core.DriverTimeoutException: query 'SELECT * FROM system.peers' timed out after PT0.5S
at com.datastax.oss.driver.api.core.DriverTimeoutException.copy(DriverTimeoutException.java:34)
at com.datastax.oss.driver.internal.core.util.concurrent.CompletableFutures.getUninterruptibly(CompletableFutures.java:149)
at com.datastax.oss.driver.api.core.session.SessionBuilder.build(SessionBuilder.java:612)
at aggregator.sink.CassandraSink.connect(CassandraSink.java:94)
at aggregator.sink.CassandraSink.init(CassandraSink.java:62)
at aggregator.sink.CassandraSink_ClientProxy.init(CassandraSink_ClientProxy.zig:253)
at org.apache.kafka.streams.processor.internals.ProcessorNode.lambda$init$0(ProcessorNode.java:97)
at org.apache.kafka.streams.processor.internals.metrics.StreamsMetricsImpl.maybeMeasureLatency(StreamsMetricsImpl.java:806)
at org.apache.kafka.streams.processor.internals.ProcessorNode.init(ProcessorNode.java:94)
Run Code Online (Sandbox Code Playgroud)
datastax-java-driver 配置:
Caused by: com.datastax.oss.driver.api.core.DriverTimeoutException: query 'SELECT * FROM system.peers' timed out after PT0.5S
at com.datastax.oss.driver.api.core.DriverTimeoutException.copy(DriverTimeoutException.java:34)
at com.datastax.oss.driver.internal.core.util.concurrent.CompletableFutures.getUninterruptibly(CompletableFutures.java:149)
at com.datastax.oss.driver.api.core.session.SessionBuilder.build(SessionBuilder.java:612)
at aggregator.sink.CassandraSink.connect(CassandraSink.java:94)
at aggregator.sink.CassandraSink.init(CassandraSink.java:62)
at aggregator.sink.CassandraSink_ClientProxy.init(CassandraSink_ClientProxy.zig:253)
at org.apache.kafka.streams.processor.internals.ProcessorNode.lambda$init$0(ProcessorNode.java:97)
at org.apache.kafka.streams.processor.internals.metrics.StreamsMetricsImpl.maybeMeasureLatency(StreamsMetricsImpl.java:806)
at org.apache.kafka.streams.processor.internals.ProcessorNode.init(ProcessorNode.java:94)
Run Code Online (Sandbox Code Playgroud)
datastax-java-driver.basic.contact-points.0=10.0.111.61:9042
datastax-java-driver.basic.load-balancing-policy.local-datacenter=datacenter1
datastax-java-driver.basic.session-keyspace=my_ks
datastax-java-driver.basic.request.timeout=20 seconds
datastax-java-driver.advanced.auth-provider.class=PlainTextAuthProvider
datastax-java-driver.advanced.auth-provider.username=${CASSANDRA_USR}
datastax-java-driver.advanced.auth-provider.password=${CASSANDRA_PWD}
datastax-java-driver.advanced.protocol.version=V4
datastax-java-driver.advanced.timestamp-generator.force-java-clock=true …Run Code Online (Sandbox Code Playgroud) OpenShift 4.6
OpenShift 中有一个基本设置:[Pod <- Service <- Route]。Pod 中运行的服务的 HTTP 端点响应时间为 90 秒或更长时间。在某些情况下这是正常的,所以我愿意允许这种行为。
然而,在发送对路由的请求(并且响应没有返回)之后(大约 60-70 秒),路由会响应HTTP 504:
<html>
<body>
<h1>504 Gateway Time-out</h1>
The server didn't respond in time.
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我不确定 OpenShift 在什么时候决定断开电路,而且我找不到任何允许更改此超时的配置选项。
如何为服务和 Pod 设置自定义超时以延长请求-响应周期的持续时间?
在我的 flutter 应用程序中安装 tflite 包时。几分钟后 flutter pub get 无法工作,它显示连接超时服务器不可用,尽管正在安装其他包。
android ×3
java ×3
javascript ×2
node.js ×2
timeout ×2
c# ×1
cassandra ×1
dart ×1
exception ×1
express ×1
flutter ×1
fsockopen ×1
hive ×1
http ×1
httpclient ×1
keep-alive ×1
kubernetes ×1
odbc ×1
openshift ×1
oracle ×1
php ×1
pubspec ×1
sockets ×1
wcf ×1
web-services ×1