小编Ben*_*Ben的帖子

如何让PHP更好用于CPU?

我正在共享的*NIX服务器上运行(由Site5运行).我有一个在后台运行的PHP脚本偶尔进行一些离线计算.它在运行时使用大约100%的CPU.我尝试过它,就像这样:

nice -n 19 php script.php
Run Code Online (Sandbox Code Playgroud)

但这似乎没有任何区别.

php nice

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

如果您尝试更新正在查询的表,MySQL会怎么做?

我有一个非常慢的查询,我需要不时在MySQL数据库上运行.

我发现在查询完成之前,会阻止尝试更新正在查询的表.

我想这是有道理的,否则查询的结果可能会不一致,但它对我来说并不理想,因为查询的重要性远低于更新.

所以我的问题实际上有两个部分:

  1. 出于好奇,MySQL在这种情况下究竟做了什么?它是否在查询期间锁定表格?或者在更新之前尝试锁定它?

  2. 有没有办法让慢查询不阻塞?我猜选项可能是:

    • 需要更新时终止查询.
    • 在更新发生之前,对表的副本运行查询
    • 只是让查询出错.

有没有人对此有任何想法?

mysql performance

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

有没有办法在INSERT语句中命名列?

当我在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)

我在这个例子中显示的语法不起作用,但我想知道是否有可能是等价的东西?如果没有,有谁知道为什么不呢?这是故意遗漏吗?

mysql syntax insert

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

我怎么能告诉python使用哪个版本的libmysqlclient.so?

我在共享托管服务器上运行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?

python

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

如何使用python的telnetlib在固定的时间段内从设备获取数据?

我通过telnet连接到硬件设备.就I/O而言,该设备非常简单.所以我向它提交一个命令,之后设备每次一行抽出一行数据,每秒一次.每行只包含一个数字.

所以我的问题是:如果我使用python的telnetlib连接到这个设备,我如何获取一段固定时间(或固定数量的数据行)的数据?

我已经尝试使用所有各种read_命令,但它们似乎都无限期地阻塞,除了read_until,我无法使用,因为输出不能用于确定何时停止.

(我在Cygwin下运行python 2.5,顺便说一句).

编辑:也许真正的问题是,我是否应该使用telnetlib,或者我应该只使用套接字模块?

python telnet

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

使用array_multisort对多维数组进行排序,您不知道数组的维数

我有一个多维数组,每年基本上由一个子数组组成.所以,例如,如果我有三年的数据,它可能看起来像这样:

$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 sorting multidimensional-array

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

在php中关联数组中初始化元素是一种好习惯吗?

我发现自己在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中使这种假设安全吗?如果它是安全的,这是一个好主意吗?

php associative-array

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

你如何在Python中创建像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)

python list

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

在Django表单中循环

我刚刚开始在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)

python django

0
推荐指数
1
解决办法
1838
查看次数

如果屏幕上有足够的空间,请将桌子并排放置

我有两个HTML表格,理想情况下可以并排放在屏幕上.宽屏显示器将应对这种精细,但桌子太宽,无法在大多数老式显示器上并排.因此,如果分辨率足够高,我想使用css(或者甚至只是HTML,如果可能的话)并排放置表格.

这通常会自动与图像一起使用,但有没有办法为表格执行此操作?

html css html-table

0
推荐指数
1
解决办法
9859
查看次数

使用Math_Matrix PEAR库的意外T_CLONE

我以前没用过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)

我真的不确定该怎么做.我想我能想到的解释是:

  1. 我没有正确安装Math_Matrix库(我在已经安装了PEAR的共享服务器上)或者已经下载了错误的版本.
  2. 在我加入Matrix.php之前,我应该包含其他内容
  3. 我已经包含了错误的文件(或正确的文件名,但错误的路径,不知何故).

要安装它,我做了以下事情:

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)

php pear matrix

0
推荐指数
1
解决办法
1195
查看次数

如何只传递某些表单值

我有一个有很多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的输入,但我不知道该怎么做,也不知道是否可能有这种方法的标准方法.

html javascript

0
推荐指数
1
解决办法
229
查看次数

将数据库驱动(非OO)python脚本转换为非数据库驱动的OO脚本

我有一些严重依赖于MySQL的软件,并且是用python编写的,没有任何类定义.出于性能原因,并且因为数据库实际上只是用于存储和检索大量数据,我想将其转换为一个完全不使用数据库的面向对象的python脚本.

所以我的计划是将数据库表导出到一组文件(不是很多 - 这是一个非常简单的数据库;它的重要性在于它有很多行,但只有几个表,每个表只有两三个列).

然后我计划读取数据,并有一组功能,提供对数据的访问和操作.

我的问题是:

有一种将一组数据库表转换为类和对象的首选方法吗?例如,如果我有一个包含水果的表,每个水果都有一个id和一个名字,我会有一个"CollectionOfFruit"类,其中包含一个"Fruit"对象列表,或者我只有一个"CollectionOfFruit"类其中包含元组列表?或者我只有一个Fruit对象列表?

我不想添加任何额外的框架,因为我希望这些代码很容易转移到不同的机器上.所以我真的只是在寻找关于如何在Python中的对象中表示可能更自然地存储在数据库表中的数据的一般建议.

或者,是否有一本我应该阅读的好书会指出我正确的方向?

python object

0
推荐指数
1
解决办法
315
查看次数