我想尝试用PHP从图像中读取一些文本.
所以,如果我有这样的图像:

如何将"Some text"文本提取到字符串中.
所有的帮助和建议表示赞赏.
出于一些奇怪的原因,就在今天我们的服务器决定在会话开始时非常慢.对于每个session_start,服务器要么在30秒后超时,要么它将花费大约20秒来启动会话.这是非常奇怪的,因为它已经很长时间没有这样做了(我们的服务器最后一次这样做是在大约7个月前).我试图将会话更改为通过数据库运行,而且工作正常,但是,因为我们当前的网站已经构建,所以每个页面都需要几天时间并且更改会话加载以包含新会话处理程序.因此我的问题仍然是:
为什么这么慢,为什么有时呢?
我们在一台专用的hetzner服务器上运行24GB的ram,CPU速度足以运行一个简单的网络服务器(我相信Xeon,但我不确定).我们使用apache + fastcgi + php5设置在服务器上运行debian.
服务器不会通过服务器状态和top命令报告太多负载.Vnstat使用我们的网络链接报告没有任何问题(同样,这不会导致本地会话处理缓慢).IOtop报告处理整个硬盘的过程没有问题.如果通过vim完成,写入会话文件所在的tmp文件夹的速度很快.
再说一次,为了清楚起见,我的主要关注点不是我们是否应该切换到数据库或内存缓存版本的会话,而是简单地问为什么会发生这种情况,因为我看了一下似乎工作正常,除了PHP本身.
编辑:我们的PHP tmp目录中的最大文件是2.9 MB,所以没有什么可以产生影响,我相信.
更新:我从来没有弄清楚出了什么问题和/或如何解决它,但是在我们切换到memcached/db会话后问题就消失了.
我没有PHP经验,我使用:
error_log("big array:" . print_r($bigArray, true));
Run Code Online (Sandbox Code Playgroud)
看一下大数组里面的内容,但看起来输出在我得到输出中的有趣内容之前就像这样:
...
[4] => Array
(
[id] => 100039235
[start] => 11:00
[end] => 19:00
[punches] => Array
(
[0] => Array
(
[id] => 6319
[comment] =>
Run Code Online (Sandbox Code Playgroud)
这是预期的吗?是否还有其他方法或解决方法可以让更多的阵列退出?
以下代码将在两台不同的计算机上同时失败(Windows 7,Chrome 12.0.742.100).
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>Test</title>
<script type="text/javascript">
location.hash = "#one";
location.hash = "#two";
location.hash = "#three";
</script>
</head>
<body>
This will error out "Uncaught Error: can't load XRegExp twice in the same frame" in chrome. Anyone got an answer?
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我觉得我尝试了一切.任何人都可以在chrome上确认这个错误,有没有人知道我如何修复它?非常感谢.
错误的URL:http: //jalsoedesign.net/test/hashchanging/
我应该补充: 它工作正常,做它应该做什么(更改页面哈希),但仍然出现错误.
什么是最快的?要根据循环内部或外部循环之外的变量做一个条件,或者它是否重要(编译器是否为你做了),或者你应该使用完全不同的变通方法?
示例#1中包含循环内的条件(单个foreach):
$test = 2;
foreach ($list as $listItem) {
if ($test == 1) {
$listItem .= " - one";
} else if ($test == 2) {
$listItem .= " - two";
} else if ($test == 3) {
$listItem .= " - three";
}
}
Run Code Online (Sandbox Code Playgroud)
示例#2,循环外的条件(多个foreach的丑陋):
$test = 2;
if ($test == 1) {
foreach ($list as $listItem) {
$listItem .= " - one";
}
} else if ($test == 2) {
foreach ($list as …Run Code Online (Sandbox Code Playgroud) 有没有一种简单的方法可以在自己的父元素中移动元素?
像这样...
从:
<div class="test">hello 1</div>
<div class="test">hello 2</div>
<div class="test">hello 3</div>
Run Code Online (Sandbox Code Playgroud)
至:
<div class="test">hello 1</div>
<div class="test">hello 3</div>
<div class="test">hello 2</div>
Run Code Online (Sandbox Code Playgroud)
将div向上或向下移动一步,或使用索引将appendTo移动到特定位置.
问题:
我们从供应商处获得股票价格和交易,并且为了加快速度,我们在交易时缓存交易(每股1次交易不是很多).我们有大约2,000只股票,所以从技术上讲,我们预计每分钟交易量高达120,000(2,000*60).现在,这些价格是实时的,但为了避免支付许可费用以向客户显示这些数据,我们需要显示价格延迟15分钟.(我们需要内部的实时价格,这就是为什么我们购买并支付它们(它们并不便宜!))
我觉得我已经尝试了所有的东西,而且我遇到了无数的问题.
我试过的事情:
1:
每15秒运行一个cronjob,运行一个查询,检查超过15分钟前股票交易的ID(用于连接):
SELECT
MAX(`time`) as `max_time`,
`stock_id`
FROM
`stocks_trades`
WHERE
`time` <= DATE_SUB(NOW(), INTERVAL 15 MINUTE)
AND
`time` > '0000-00-00 00:00:00'
GROUP BY
`stock_id`
Run Code Online (Sandbox Code Playgroud)
这工作得非常快 - 1.8秒数约为2,000,000行,但以下内容非常慢:
SELECT
st.id,
st.stock_id
FROM
(
SELECT
MAX(`time`) as `max_time`,
`stock_id`
FROM
`stocks_trades`
WHERE
`time` <= DATE_SUB(NOW(), INTERVAL 15 MINUTE)
AND
`time` > '0000-00-00 00:00:00'
GROUP BY
`stock_id`
) as `tmp`
INNER JOIN
`stocks_trades` as `st`
ON
(tmp.max_time = st.time AND tmp.stock_id = st.stock_id)
GROUP BY …Run Code Online (Sandbox Code Playgroud) 我应该补充一点,虽然 KVP 数组工作得很好,但在进行 OOP 时我更喜欢对象,因为它$foo->bar->foo看起来比$foo->bar['foo']我认为的更干净。
$foo = array('foo' => 'bar');PHP 有一种很好的方法,可以通过甚至新的 5.4 括号语法:来创建带有预填充数据的数组$foo = ['foo' => 'bar'],但对象 ( ) 似乎不存在相同的语法stdClass。
数组演示:
<?php
class Foo {
public $bar = array(
'foo' => 'bar',
'bar' => 'foo'
);
}
$foo = new Foo;
var_dump($foo->bar);
/*
array(2) {
["foo"]=>
string(3) "bar"
["bar"]=>
string(3) "foo"
}
*/
?>
Run Code Online (Sandbox Code Playgroud)
太棒了 - 如果我们想在不使用 a 的情况下__construct对对象执行相同的操作怎么办?
我正在使用SimplePie和PHP 5.3(启用了gc)来解析我的RSS提要.在执行以下操作时,这很有效且没有问题:
$simplePie = new SimplePie();
$simplePie->set_feed_url($rssURL);
$simplePie->enable_cache(false);
$simplePie->set_max_checked_feeds(10);
$simplePie->set_item_limit(0);
$simplePie->init();
$simplePie->handle_content_type();
foreach ($simplePie->get_items() as $key => $item) {
$item->get_date("Y-m-d H:i:s");
$item->get_id();
$item->get_title();
$item->get_content();
$item->get_description();
$item->get_category();
}
Run Code Online (Sandbox Code Playgroud)
内存调试超过100次迭代(使用不同的 RSS源):

但是在使用时$item->get_permalink(),我的内存调试看起来像100次迭代(使用不同的 RSS源).
代码产生问题:
foreach ($simplePie->get_items() as $key => $item) {
$item->get_date("Y-m-d H:i:s");
$item->get_id();
$item->get_title();
$item->get_permalink(); //This creates a memory leak
$item->get_content();
$item->get_description();
$item->get_category();
}
Run Code Online (Sandbox Code Playgroud)

我试过的事情:
get_link而不是get_permalink__destroy所提到这里(即使它应该是固定的5.3)目前的调试过程:
我似乎已经将问题追溯到SimplePie_Item::get_permalink- > SimplePie_Item::get_link- > …
在经过多次追踪后,我终于弄明白我的代码出了什么问题,所以这个问题不是" 我该如何修复它 ",而是" 为什么会发生这种情况? ".
请考虑以下代码:
class Foo {
private $id;
public $handle;
public function __construct($id) {
$this->id = $id;
$this->handle = fopen('php://memory', 'r+');
echo $this->id . ' - construct' . PHP_EOL;
}
public function __destruct() {
echo $this->id . ' - destruct' . PHP_EOL;
fclose($this->handle);
}
public function bar() {
echo $this->id . ' - bar - ' . get_resource_type($this->handle) . PHP_EOL;
return $this;
}
public static function create($id) {
return new Foo($id);
}
}
Run Code Online (Sandbox Code Playgroud)
看起来很简单 - 创建它时会打开一个内存流并设置属性 …