我正在共享的*NIX服务器上运行(由Site5运行).我有一个在后台运行的PHP脚本偶尔进行一些离线计算.它在运行时使用大约100%的CPU.我尝试过它,就像这样:
nice -n 19 php script.php
Run Code Online (Sandbox Code Playgroud)
但这似乎没有任何区别.
我有一个非常慢的查询,我需要不时在MySQL数据库上运行.
我发现在查询完成之前,会阻止尝试更新正在查询的表.
我想这是有道理的,否则查询的结果可能会不一致,但它对我来说并不理想,因为查询的重要性远低于更新.
所以我的问题实际上有两个部分:
出于好奇,MySQL在这种情况下究竟做了什么?它是否在查询期间锁定表格?或者在更新之前尝试锁定它?
有没有办法让慢查询不阻塞?我猜选项可能是:
有没有人对此有任何想法?
当我在PHP代码中执行SELECT语句时,我总是选择命名列,如:
SELECT id, name from users;
Run Code Online (Sandbox Code Playgroud)
而不是使用:
SELECT * from users;
Run Code Online (Sandbox Code Playgroud)
这样做的好处是提供更多信息和可读性,并且如果将新列添加到表中,也可以避免以后出现问题.
我想知道的是,是否可以在INSERT语句中使用相同的想法?我想象它可能是这样的:
INSERT into people values (id=1, name="Fred");
Run Code Online (Sandbox Code Playgroud)
我在这个例子中显示的语法不起作用,但我想知道是否有可能是等价的东西?如果没有,有谁知道为什么不呢?这是故意遗漏吗?
我在共享托管服务器上运行python脚本,直到今天早上有MySQL版本4.现在它有版本5.我的python脚本不能再连接到MySQL,因为它找不到libmysqlclient_r.so.14:
$ python my_script.py
Traceback (most recent call last):
File "my_script.py", line 6, in ?
import MySQLdb
File "/home/lib/python2.4/site-packages/PIL-1.1.6-py2.4-linux-i686.egg/__init__.py", line 19, in ?
File "build/bdist.linux-i686/egg/_mysql.py", line 7, in ?
File "build/bdist.linux-i686/egg/_mysql.py", line 6, in __bootstrap__
ImportError: libmysqlclient_r.so.14: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
/ usr/lib中有各种其他版本的libmysqlclient:
/usr/lib/libmysqlclient.so.15
/usr/lib/libmysqlclient.so.14
/usr/lib/mysql/libmysqlclient.la
/usr/lib/mysql/libmysqlclient.so
/usr/lib/mysql/libmysqlclient_r.so
/usr/lib/mysql/libmysqlclient_r.a
/usr/lib/mysql/libmysqlclient_r.la
/usr/lib/mysql/libmysqlclient.a
/usr/lib/libmysqlclient.so
/usr/lib/libmysqlclient_r.so
/usr/lib/libmysqlclient_r.so.15
/usr/lib/libmysqlclient_r.so.15.0.0
/usr/lib/libmysqlclient.so.15.0.0
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:我怎么能告诉python(版本2.4.3)使用哪个版本的libmysqlclient?
我通过telnet连接到硬件设备.就I/O而言,该设备非常简单.所以我向它提交一个命令,之后设备每次一行抽出一行数据,每秒一次.每行只包含一个数字.
所以我的问题是:如果我使用python的telnetlib连接到这个设备,我如何获取一段固定时间(或固定数量的数据行)的数据?
我已经尝试使用所有各种read_命令,但它们似乎都无限期地阻塞,除了read_until,我无法使用,因为输出不能用于确定何时停止.
(我在Cygwin下运行python 2.5,顺便说一句).
编辑:也许真正的问题是,我是否应该使用telnetlib,或者我应该只使用套接字模块?
我有一个多维数组,每年基本上由一个子数组组成.所以,例如,如果我有三年的数据,它可能看起来像这样:
$data[0] = Array(0,1,2,3,4,5,6,7);
$data[1] = Array(6,5,4,3,6,7,8,9);
$data[2] = Array(1,4,2,5,7,3,1,4);
Run Code Online (Sandbox Code Playgroud)
现在我希望能够在其中一年的基础上对这些数组进行排序.例如,我可能想要根据第二年进行排序,在这种情况下,它们都将根据$ data [1]的重新排序进行排序.
我可以使用array_multisort轻松完成此操作:
array_multisort($data[1],SORT_ASC,$data[0],$data[2]);
Run Code Online (Sandbox Code Playgroud)
这没关系,但我不知道会有多少年的数据.我想要一些方法来指定恰当数量的参数,但我不知道如何在php中这样做,除非我只需要为每个可能的年数都有一个if语句,这看起来非常痛苦:
if ($num_years == 1)
{
array_multisort($data[$which_year],SORT_ASC);
}
else if ($num_years == 2)
{
array_multisort($data[$which_year],SORT_ASC,$data[0],$data[1]); // this does work, interestingly, in spite of the repetition...
}
Run Code Online (Sandbox Code Playgroud)
谁知道更好的方法?
我发现自己在PHP中使用关联数组做了很多事情.
我这样做:
foreach ($item as $key=>$value) {
if ($arr[$key] == null) {
$arr[$key] = 0;
}
$arr[$key] += $other_arr[$value];
}
Run Code Online (Sandbox Code Playgroud)
但后来我意识到如果我排除初始化$ arr [$ key]的行,它可以正常工作,大概因为它是null,它被视为与0相同.
在php中使这种假设安全吗?如果它是安全的,这是一个好主意吗?
这是一个非常简单的问题(我是Python的新手).
我基本上想要一个像PHP数组的数据结构 - 也就是说,我想初始化它然后只是添加值.
据我所知,这是不可能的Python,所以我有我可能想要用作索引的最大值,但我无法弄清楚如何创建指定长度的空列表.
另外,列表是一个正确的数据结构,用于模拟它应该只是一个数组?我试图使用一个数组,但它似乎不满意存储字符串.
编辑:对不起,我没有解释清楚我在寻找什么.当我将项目添加到列表中时,我不想按顺序将它们放入,而是我想将它们插入列表中的指定插槽中.
即,我希望能够做到这一点:
list = []
for row in rows:
c = list_of_categories.index(row["id"])
print c
list[c] = row["name"]
Run Code Online (Sandbox Code Playgroud) 我刚刚开始在Django中构建原型应用程序.我最初是通过Django网站上的Django应用程序教程开始的,这非常有帮助,并且给了我开始所需要的东西.现在我有几个我希望的非常简单的问题:
我想将一个循环放到views.py中,循环遍历从表单传入的一组变量.所以我在HTML表单中有大量项目,每个项目都有一个SELECT下拉列表供人们选择0-10的分数,如下所示:
<select name="score1">
<option value=0 SELECTED>No score</option>
<option value=1>1</option>
<option value=2>2</option>
<option value=3>3</option>
<option value=4>4</option>
<option value=5>5</option>
<option value=6>6</option>
<option value=7>7</option>
<option value=8>8</option>
<option value=9>9</option>
<option value=10>10</option>
</select>
Run Code Online (Sandbox Code Playgroud)
所以,我有100个这样的变量,得分1,得分2,得分3,......,得分99,得分100.提交表单时,我想遍历每个变量并查看它是否已设置(即不是0),如果是,我想将该值存储在数据库中的适当位置.我的问题是我无法弄清楚如何循环这些变量.我猜我想要这样的东西:
for o in request.POST.all
endfor
Run Code Online (Sandbox Code Playgroud)
但后来我真的不知道该怎么做.
我不是在寻找有人为我编写代码,真的:我只是想在python/Django中编写如何编写这样的循环的一些指导,也可能是一些关于良好参考指南的指示我可以看到在线或购买,将让我访问这种东西.
另外,上面的选择对象几乎是手工创建的,我真的希望能够通过循环在模板中首先生成它.我的模板目前有这个:
<table>
{% for movie in movie_list %}
<tr>
<td> {{ movie }} </td>
<td>
<select name="score{{ movie.id }}">
<option value=0 SELECTED>No score</option>
<option value=1>1</option>
<option value=2>2</option>
<option value=3>3</option>
<option value=4>4</option>
<option value=5>5</option>
<option value=6>6</option>
<option value=7>7</option>
<option value=8>8</option> …Run Code Online (Sandbox Code Playgroud) 我有两个HTML表格,理想情况下可以并排放在屏幕上.宽屏显示器将应对这种精细,但桌子太宽,无法在大多数老式显示器上并排.因此,如果分辨率足够高,我想使用css(或者甚至只是HTML,如果可能的话)并排放置表格.
这通常会自动与图像一起使用,但有没有办法为表格执行此操作?
我以前没用过PEAR,所以我可能会做一些愚蠢的事情.我已经安装了Math_Matrix库,但是当我包含它时,我只是得到一个错误.我的整个代码是这样的:
<?php
$path = '/home/PEAR/Math_Matrix-0.8.0';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
include_once 'Matrix.php';
?>
Run Code Online (Sandbox Code Playgroud)
我得到的错误是这样的:
Parse error: syntax error, unexpected T_CLONE, expecting T_STRING in /home/PEAR/Math_Matrix-0.8.0/Matrix.php on line 272
Run Code Online (Sandbox Code Playgroud)
我真的不确定该怎么做.我想我能想到的解释是:
要安装它,我做了以下事情:
pear install --alldeps channel://pear.phpunit.de/PHPUnit
pear install --alldeps channel://pear.php.net/Math_Vector-0.6.2
pear install Math_Matrix
Run Code Online (Sandbox Code Playgroud) 我有一个有很多SELECT的表单.由于各种原因,我只想传递给用户选择的表格.换句话说,每个SELECT都是这样的:
<SELECT name=field001>
<option value=-1>Please pick a value</option>
<option value=1>1</option>
<option value=2>2</option>
<option value=3>3</option>
</SELECT>
Run Code Online (Sandbox Code Playgroud)
通常,一次只能选择一个或两个,我只想将选中的一个传递给表单.我猜我需要取消设置JavaScript中-1的输入,但我不知道该怎么做,也不知道是否可能有这种方法的标准方法.
我有一些严重依赖于MySQL的软件,并且是用python编写的,没有任何类定义.出于性能原因,并且因为数据库实际上只是用于存储和检索大量数据,我想将其转换为一个完全不使用数据库的面向对象的python脚本.
所以我的计划是将数据库表导出到一组文件(不是很多 - 这是一个非常简单的数据库;它的重要性在于它有很多行,但只有几个表,每个表只有两三个列).
然后我计划读取数据,并有一组功能,提供对数据的访问和操作.
我的问题是:
有一种将一组数据库表转换为类和对象的首选方法吗?例如,如果我有一个包含水果的表,每个水果都有一个id和一个名字,我会有一个"CollectionOfFruit"类,其中包含一个"Fruit"对象列表,或者我只有一个"CollectionOfFruit"类其中包含元组列表?或者我只有一个Fruit对象列表?
我不想添加任何额外的框架,因为我希望这些代码很容易转移到不同的机器上.所以我真的只是在寻找关于如何在Python中的对象中表示可能更自然地存储在数据库表中的数据的一般建议.
或者,是否有一本我应该阅读的好书会指出我正确的方向?