小编vye*_*rov的帖子

使用fgets/fread从fsockopen读取数据

这是我正在使用的代码:

if (!($fp = fsockopen('ssl://imap.gmail.com', '993', $errno, $errstr, 15)))
    echo "Could not connect to host";
$server_response = fread($fp, 256);
echo $server_response;

fwrite($fp, "C01 CAPABILITY"."\r\n");
while (!feof($fp)) {
    echo fgets($fp, 256);
}
Run Code Online (Sandbox Code Playgroud)

我收到了第一个回复:

OK Gimap ready for requests from xx.xx.xx.xx v3if9968808ibd.15 
Run Code Online (Sandbox Code Playgroud)

但随后页面超时.我搜索了stream_set_blocking,stream_set_timeout,stream_select,fread等,但无法让它工作.我需要读取服务器发送的所有数据,然后继续执行其他命令(我将使用imap检索电子邮件).

谢谢

php fgets fsockopen fread feof

8
推荐指数
1
解决办法
2万
查看次数

两个日期之间的平均差异,按第三个字段分组?

所以说我们有3个领域, username, start_date, end_date

用户启动和停止多个记录,例如,bob已经启动并停止了两个记录.

bob   1/2/13 11:00  1/2/13 13:00
jack  1/2/13 15:00  1/2/13 18:00
bob   2/2/13 14:00  1/2/13 19:00
Run Code Online (Sandbox Code Playgroud)

我需要知道每个用户所花费的平均时间(即开始和结束之间的差异),以小时为单位(即按用户分组,而不仅仅是每行).

我不能完全理解如何做差异,平均AND组?有帮助吗?

sql

8
推荐指数
2
解决办法
3万
查看次数

窗口函数和更多"本地"聚合

假设我有这个表:

select * from window_test;

 k | v
---+---
 a | 1
 a | 2
 b | 3
 a | 4
Run Code Online (Sandbox Code Playgroud)

最终我想得到:

 k | min_v | max_v
---+-------+-------
 a | 1     | 2
 b | 3     | 3
 a | 4     | 4
Run Code Online (Sandbox Code Playgroud)

但我会很高兴得到这个(因为我可以很容易地过滤它distinct):

 k | min_v | max_v
---+-------+-------
 a | 1     | 2
 a | 1     | 2
 b | 3     | 3
 a | 4     | 4
Run Code Online (Sandbox Code Playgroud)

使用PostgreSQL 9.1+窗口函数可以实现这一点吗?我试图了解我是否可以使用单独的分区来处理k=a此示例中的第一次和最后一次(按顺序排列v).

postgresql common-table-expression window-functions

7
推荐指数
1
解决办法
1402
查看次数

Postgresql中的高斯随机分布

我有一个表格,比方说250个网址:

create table url (
  id serial,
  url varchar(64)
)
Run Code Online (Sandbox Code Playgroud)

这些URL分别对应于网站.每个网站都有不同的受欢迎程度.比方说,在id=125(集中于高斯一)是最流行的,那些在id=1或者id=250是最流行的.

我想在"url"表中提供的"log"表格中填充"log"表,其值为url,但考虑到不同的URL可能更频繁地出现(例如,id为125的url url将是最受欢迎).

create table log (
  id serial,
  url_id integer
)
Run Code Online (Sandbox Code Playgroud)

我想避免使用,random()因为它是统一的而不是非常"真实".

如何用Postgresql实现这一目标?

random postgresql statistics gaussian

6
推荐指数
2
解决办法
3760
查看次数

在Win 7上安装SQLite ADO.NET时出错

当我尝试在两个不同的Win 7笔记本电脑上安装ADO.NET版本的SQLite时,我收到以下错误:

Installer.exe: #32 @ 2012.05.06T13:58:34.8921292: Configuration.Process: No actual changes will be made to this system because "what-if" mode is enabled.
Installer.exe: #33 @ 2012.05.06T13:58:34.8951293: TraceOps.ShowMessage: Cannot continue, the "confirm" option is not enabled.
Run Code Online (Sandbox Code Playgroud)

我以管理员身份运行Installer.exe.

sqlite ado.net windows-7

6
推荐指数
1
解决办法
8018
查看次数

postgresql:在不改变时间的情况下更改时间戳时区部分?

我的表中有一个时间戳字段,它以 UTC-10 格式存储数据。但是,正确的时区是 UTC+10

我想在不改变时间的情况下将时区部分更改为 UTC+10。只希望系统考虑与 UTC+10 而不是 UTC-10 相同的时间戳

如果我这样做

select email_timestamp as time zone 'UTC+10' from emails
Run Code Online (Sandbox Code Playgroud)

然后它也会改变时间。

有人可以告诉我如何在不改变时间的情况下更改时区部分吗?

postgresql timestamp

6
推荐指数
1
解决办法
929
查看次数

Postgresql ORDER BY - 选择正确的索引

T(user, timestamp,...)100毫升+记录的表(PostgreSQL 9.1).

表单的查询

SELECT * 
FROM T 
WHERE user='abcd' 
ORDER BY timestamp 
LIMIT 1
Run Code Online (Sandbox Code Playgroud)

timestamp当有大约100000个用户记录时,使用索引而不是用户索引.

使用时间戳索引总是会得到较差的结果(20秒以上),因为它最终会扫描所有记录.timestamp通过更改要使用的查询来绕过索引ORDER BY DATE(timestamp)将导致查询求助于用户索引并给出小于100毫秒的结果.

  • 总RAM:64 GB
  • shared_buffers:16 GB
  • work_mem:32 MB

为什么postgresql忽略user索引timestamp而是使用索引(时间戳索引需要查看所有记录)?是否有任何postgresql配置参数可以更改,以使查询使用用户名索引本身?

sql postgresql query-optimization

6
推荐指数
1
解决办法
777
查看次数

PostgreSQL ltree找到给定标签的所有祖先(不是路径)

我有一个带有ltree路径列的表.在我的层次结构中,标签的路径是唯一的,这意味着每个标签都只有一个父标签.换句话说,表中没有两个以相同标签结尾的ltree路径.

我有一个ltree标签,让我们说"C".

我可以使用以下查询找到此标签的所有后代行:

select * from myTree where path ~ '*.C.*';
Run Code Online (Sandbox Code Playgroud)

这工作正常,并提供正确的子树.

现在我需要实现查询以查找此给定标签的所有祖先行.我的意思是如果表中有3行标有"A","AB","ABC",我想得到路径为"A"和"AB"的行(可能包括"ABC"本身,现在没关系).

如果我知道"C"的完整路径(上例中的"ABC"),则@>操作员可以轻松完成任务.但是,现在我只知道"C",我仍然希望通过单个查询来完成任务.有没有办法做到这一点?

sql postgresql ltree

6
推荐指数
1
解决办法
2996
查看次数

如何将我的bytearray('b\x9e\x18K\x9a')转换为类似这样的东西 - >'\ x9e\x18K\x9a'<---只是str,而不是数组

如何将我转换bytearray('b\x9e\x18K\x9a')为这样的东西 - > \x9e\x18K\x9a<---只是str,而不是数组!

>> uidar = bytearray()
>> uidar.append(tag.nti.nai.uid[0])
>> uidar.append(tag.nti.nai.uid[1])
>> uidar.append(tag.nti.nai.uid[2])
>> uidar.append(tag.nti.nai.uid[3])
>> uidar
   bytearray('b\x9e\x18K\x9a')
Run Code Online (Sandbox Code Playgroud)

我尝试解码我​​的bytearray

uid  =  uidar.decode('utf-8')
Run Code Online (Sandbox Code Playgroud)

但它不能......

Traceback (most recent call last):
  File "<pyshell#42>", line 1, in <module>
    uid = uidar.decode("utf-8")
  File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x9e in position 0: invalid start byte
Run Code Online (Sandbox Code Playgroud)

请帮帮我 ...

python string bytearray

5
推荐指数
1
解决办法
2万
查看次数

PHP $_SESSION 即使设置了值也返回空数组

我正在尝试诊断 PHP 问题。我将值传递给$_SESSION数组,并且这些值不会被数组获取。我曾经var_dump($_SESSION)看到被退回的东西,然后我得到了array (0){}。即使我知道正在设置会话并将值添加到数组中,情况也是如此。

这是我的代码的简化版本(index.php):

<?php
session_start();
var_dump($_SESSION); 

if ($_REQUEST['query'] == "" or is_null($_REQUEST['query'])) {
$errormsg = "You must enter a search term to query.  Please try again.";
}

?>

<form name="product_search" id="product_search" method="post" action="index.php">
<input size="60" type="text" name="query" id="query" <?php echo "value=\"" .  $_REQUEST['query'] . "\" "; ?>/>
<?php if (isset($errormsg)) {echo "<span class=\"errormsg\">" . $errormsg . "</span>";} ?>
<input type="submit" class="searchBtn" value="Search"/>

<?php
    $_SESSION['query'] = 'foo';
    $_SESSION['search_field'] = 'man';
    $_SESSION['results'] = 'chu'; …
Run Code Online (Sandbox Code Playgroud)

php session

5
推荐指数
2
解决办法
3万
查看次数